jQuery $(document).ready 和 UpdatePanels:精致的外观
使用 jQuery 将鼠标悬停效果应用于 UpdatePanel 中的元素时,初始页面加载按预期运行。但是,在 UpdatePanel 启动部分页面更新期间,鼠标悬停效果在该特定区域内停止运行。
出现这种情况是因为 UpdatePanel 彻底修改了其面板的内容,有效地消除了附加到先前元素的任何事件订阅。为了解决这个问题,建议每次更新后重新订阅所需的事件。这可以通过将用于初始加载的 $(document).ready 与用于后续更新的 Microsoft PageRequestManager 对象相结合来实现。
PageRequestManager 是一个在 UpdatePanel 存在时自动可用的 JavaScript 对象,提供触发的 endRequest 事件更新完成后。可以利用它来重新绑定 jQuery 事件,如下所示:
$(document).ready(function() { // Initial event binding }); var prm = Sys.WebForms.PageRequestManager.getInstance(); prm.add_endRequest(function() { // Event re-binding after update });
PageRequestManager 事件提供对 sender 和 eventArgs 的访问,从而允许对重新绑定进行更细粒度的控制。有关更多详细信息,请参阅 Microsoft 的文档:msdn.microsoft.com/.../bb383810.aspx
另一种方法(特别适合高度动态的场景)涉及利用 jQuery 的 .on() 方法。与频繁重新订阅相比,.on() 提供了更高的效率。然而,在做出决定之前彻底查看文档非常重要,因为并非所有 jQuery 插件都可以轻松重构以利用 .on()。在这种情况下,重新订阅仍然是更实用的解决方案。
以上是如何在 ASP.NET UpdatePanel 中维护 jQuery 鼠标悬停效果?的详细内容。更多信息请关注PHP中文网其他相关文章!