[英]SignalR postback causes jQuery actions to stop working
我在屏幕上看到了此小部件,该小部件会根据某些服务器端更改其中包含的数据及其类,并对鼠标单击做出响应。 我正在使用SignalR同时通知多个客户端更新。 我遇到的问题是,我已将包括标记在内的所有内容都放在了更新面板中(否则,我每次都必须回发整个页面,这是一种糟糕的用户体验),并且在第一次回发后,我的图片带有“ iconThing“ ID不再对按钮点击做出反应。
我使用的原始点击功能是
$("#iconThing").click(function () {
$(this).parent(".activity-pad").toggleClass("hidden-pad");});
在浏览了各种在线资源并且堆栈本身溢出之后,我偶然发现SignalR Update Panel仅在第一次使用时才能从理论上解决我的问题-除了我基于此添加的新代码不再响应点击的事实全部(我敢打赌,这是相当解释性的,但是我对javascript和jquery还是比较陌生,因此不胜感激帮助)
$(document).on("click", "#iconThing", function(){
$(this).parent(".activity-pad").toggleClass("hidden-pad");});
标记本身是(PadColorSetter是服务器端字符串,输出基于该字符串。它已经过测试并且可以正常工作(视觉效果确实按预期发生了变化),只是onclick功能似乎会自行消失)
<asp:UpdatePanel runat="server" id="upActivityPadModule" IsUpdatePanel="true">
<ContentTemplate>
<div class="activity-pad hidden-pad">
<div class="icon <%# PadColorSetter %>" id="iconThing">
Activity Pad
</div>
<div class="top <%# PadColorSetter %>">
</div>
<div class="middle <%# PadColorSetter %>">
<div class="middle-content">
<script type="text/javascript">
// SignalR
$(function () {
// Declare a proxy to reference the hub.
var padUpdater = $.connection.activityPadHub;
//$.connection.hub.start();
// Create a function that the hub can call to broadcast messages.
padUpdater.client.ActivityPadRefresh = function () {
__doPostBack('<%= upActivityPadModule.ClientID %>', '');
};
// Start the connection.
$.connection.hub.start().done(function () {
// Call the ActivityPadRefresh method on the hub.
padUpdater.server.ActivityPadRefresh();
});
});
</script>
</div>
</div>
<div class="bottom <%# PadColorSetter %>">
</div>
</div>
</ContentTemplate>
</asp:UpdatePanel>
编辑。:
$("#iconThing").bind("click", function () {
代替
$(document).on("click", "#iconThing", function(){
似乎对点击做出反应。 不幸的是,直到回发完成。
万一其他人都在为同一问题而苦苦挣扎,救了我的是:
Sys.WebForms.PageRequestManager.getInstance().add_endRequest(function () {
$("#iconThing").bind("click", function () {
//$("#iconThing").click(function () {
$(this).parent(".activity-pad").toggleClass("hidden-pad");
});
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.