jquery需要在部分页面回发上重新绑定事件

当我执行部分页面回发时,如何重新绑定我的事件(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的“实时”function。 您可以将事件添加到将来的元素以及页面上的当前元素。 这可以简化您需要编写的代码。

当你进行部分回发时,会替换一些DOM元素,当然,新元素会松散jQuery绑定。 您可以使用ScriptManager类来注册将在部分回发完成后执行的脚本(请查看此处 )

最优雅的解决方案(使用jQuery 2.x)是这样的:

使用“on”事件。 确保将事件绑定到文档而不绑定到元素本身!

代码示例:

 $(document).on('click', 'div.messages', function () { console.log('click on div.messages'); return false; }); 

例如,将此代码放入document.ready中。

即使在UpdatePanel中更改或创建了div.messages,这仍然有效。 并且它永远不会被激发两次或更多次。