jQuery .on无法正常工作

Joh*_*ith -1 jquery jquery-on

我正在使用分页和jQuery,我的代码首先看起来像这样:

$(function() {
    $(".pagination a").live("click", function() {
        $.get(this.href, null, null, "script");
        return false;
    });
});
Run Code Online (Sandbox Code Playgroud)

然后我注意到live在jQuery 1.9中删除了所以我将代码更改为:

$(function() {
    $(".pagination").on("click", 'a', function() {
        $.get(this.href, null, null, "script");
        return false;
    });
});
Run Code Online (Sandbox Code Playgroud)

但不知怎的,这也行不通!问题是我可以从第一个ajax页面导航到第二个页面,然后将第二个页面导回到第一个页面或第三个页面,我的ajax不起作用.我太习惯了,因为我的代码没有注意到新添加的内容.pagination a.

gdo*_*ica 5

  • on仅限于现有元素,如果要在使用后调用插入的元素,则on必须添加选择器参数.
    使用选择器参数,它是一个委托事件,而没有它是一个直接事件.
  • 如果您使用了on委托事件签名,则回调绑定到on被调用的选择器$('thisSelector'),而它将监听选择器参数中的元素事件
    $('foo').on('event', 'thisSelector', func).
  • 为了获得更好的性能,您应该将on函数附加到最接近的静态元素到新插入的元素,这实际上live是在1.9版本中从jQuery中删除的主要原因,live将侦听器附加到document具有巨大性能损失的侦听器.

我们从上面学到的东西,你必须确保.pagination在你打电话时已经在DOM中on,并且它不应该被替换.

现在你应该有类似的东西:

$("{staticElement-closeToTheNewElements}").on("click", '.pagination a',callback);
Run Code Online (Sandbox Code Playgroud)