当我执行部分页面回发时,如何重新绑定我的事件 (jquery)?
我正在使用以下方式连接所有内容:
$(document).ready(function(){};
在部分页面回发后,我的事件没有触发。
当我执行部分页面回发时,如何重新绑定我的事件 (jquery)?
我正在使用以下方式连接所有内容:
$(document).ready(function(){};
在部分页面回发后,我的事件没有触发。
您可以点击PageRequestManager endRequestEvent:
Sys.WebForms.PageRequestManager.getInstance().add_endRequest(function(){});
或者,如果它是您尝试附加的控制事件,您可以使用 jQuery实时事件。
另一种选择是手动进行事件委托。这就是“现场”活动在幕后所做的事情。将事件处理程序附加到文档本身,然后如果事件的发送者是您期望的元素,则有条件地执行您的方法。
$(document).click(function(e){
if($(e.target).is(".collapseButton")){
$(this).find(".collapsePanel").slideToggle(500);
}
})
我从'部分页面回发'猜测你在 Asp.net 土地上工作。
尝试使用
Sys.Application.add_load(function() { });
您应该仍然可以在该 func 中使用所有正常的 jQuery 内容。
在此处查看jQuery 1.3 的“实时”功能。您可以将事件添加到未来元素以及页面上的当前元素。这可能会简化您需要编写的代码。
最优雅的解决方案(使用 jQuery 2.x)是这样的:
使用“on”事件。确保将事件绑定到文档而不是元素本身!
代码示例:
$(document).on('click', 'div.messages', function () {
console.log('click on div.messages');
return false;
});
例如,将此代码放入 document.ready 中。
即使在 UpdatePanel 中更改或创建了 div.messages,这仍然有效。而且它永远不会一次发射两次或更多次。
当您执行部分回发时,一些 DOM 元素会被替换,当然,新元素会丢失 jQuery 绑定。您可以使用 ScriptManager 类来注册将在部分回发完成后执行的脚本(看看这里)