0

我用 ajax 加载页面,也用它加载页面 javascript 代码。

我想知道,如果我删除页面 javascript 代码,它上面有 jquery 实时绑定事件,它会终止绑定还是我仍然需要调用 $(this).die(); 功能?

jquery 实时绑定事件

jQuery(function($) {

    $('.showNavLink').live('click', function() {

    });
});

Ajax 页面流

  • 主页已加载
  • 主页 javascript 已加载
  • 用户请求加载新页面(点击)
  • 使用 javascript 删除主页代码
  • 删除 javascript 代码
  • 正在加载新页面...(从第一步开始循环)。
4

3 回答 3

2

移除元素会解除对应元素的所有事件的关联。

即使您删除了元素,如果您不删除事件,也可能存在内存泄漏。所以最好显式调用.die()

As of jQuery 1.7, use of .die() (and its complementary method, .live())
is not recommended. Instead, use .off() to remove event handlers bound with .on()
于 2012-10-24T16:48:24.267 回答
2

删除 Javascript 源代码不会删除从该代码创建的 Javascript 函数对象。

您必须取消绑定事件处理程序以防止它处理事件。

于 2012-10-24T16:53:33.837 回答
2

$.live已弃用http://api.jquery.com/live/。但是如果你正在使用它,你应该删除它。我假设您永远不会刷新页面。仅删除脚本标签并不会撤消脚本运行时所做的一切。

新方法是

$(document).on('click', '.showNavLink', function() {});

不再需要时

$(document).off('click', '.showNavLink');
于 2012-10-24T16:55:27.970 回答