如果jquery现场事件代码已被删除,我仍然需要解除绑定吗?

时间:2012-10-24 16:44:56

标签: javascript jquery events bind live

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

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

jquery live bind event

jQuery(function($) {

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

    });
});

Ajax页面流程

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

3 个答案:

答案 0 :(得分: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()

答案 1 :(得分:2)

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

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

答案 2 :(得分:2)

$.live已弃用http://api.jquery.com/live/。但如果您正在使用它,则应将其删除。我假设你永远不会刷新页面。只删除脚本标记不会撤消脚本运行时所做的所有操作。

新方法是

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

不再需要时

$(document).off('click', '.showNavLink');