JQuery’on’与’live’

我有一个场景,JQuery’on’和’live’不会执行相同的操作。 也许有人可以指出原因。 我在我的项目中使用JQuery 1.7.2,在这个版本中,’live’已被’on’取代。 我在列表页面中使用以下代码。 基本上,此页面有一个字母栏,用户可以单击该栏并将加载具有该姓氏的所有客户端。 我想通过ajax执行链接。

码:

$("a.listajax").on("click", function (e) { e.preventDefault(); var url = $(this).attr("href"); $("div.content").load(url + " div.content"); return false; }); 

这里的问题是,当我第一次加载页面并单击链接时,一切正常。 该页面通过ajax加载。 但是,之后所有链接都会丢失绑定,然后如果我点击任何链接,我会加载整个页面。

我将’on’替换为’live’,并且链接开始表现完美,即使在后续点击中也是如此。

我错过了什么?

一个不是简单地用.on替换.live

 $("a.listajax").live('click', function(e)) 

相当于:

 $(document).on('click', 'a.listajax', function(e)) 

重要

如果所有.listajax锚点的共同祖先都不会从DOM中删除,那么你应该使用它(尽可能最深的)而不是document ; 这将提高性能。

这就是live() 。 它在创建时重新绑定新的DOM元素。 在jQuery的网站上有很多类似的问题,比如这个 ,因为它可能有点令人困惑。

根据jQuery文档 ,您使用live()来:

为现在和将来与当前选择器匹配的所有元素附加事件处理程序。

“…在将来”部分是关键,因为on() 没有那个 。