1

可能重复:
jQuery:如何用 .on 替换 .live?

.live()在 jQuery 1.7 中被弃用并在 1.9 版中被删除。我刚刚在我们的应用程序中将 jQuery 升级到 1.9.0,我看到我们过去使用了大量的.live()调用。

我将所有.live()调用移植到.on()调用。在大多数情况下,这是一个简单的更新(简单的情况,例如.live()页面上的第二个片段中的那个)。但是在几个地方我有类似的东西:

(function($){
    $(document).ready(function() {
        $('.ui-jqgrid-btable').find('a.pop_dialog_jqgrid').live('click', function() {
            //some code here
        });
    });
})(jQuery);

我已经移植到:

(function($){
    $(document).ready(function() {
        $(document).on('click', $('.ui-jqgrid-btable').find('a.pop_dialog_jqgrid'), function() {
            //some code here
        });
    });
})(jQuery);

但它对新代码的作用完全不同(页面上任何地方的所有点击都会触发“某些代码”)。

任何人都可以启发我吗?

4

2 回答 2

3

第二个参数应该是一个选择器,而不是一个对象:

$(document).on('click', '.ui-jqgrid-btable a.pop_dialog_jqgrid', function() {
     //some code here
});
于 2013-02-01T18:07:36.697 回答
1

你需要一个选择器,而不是一个 jQuery 对象。就个人而言,我会将其本地化而不是文档。

$('.ui-jqgrid-btable').on('click', 'a.pop_dialog_jqgrid', function() {
    //some code here
});
于 2013-02-01T18:09:53.330 回答