1

重複の可能性:
jQuery:.liveを.onに置き換える方法は?

.live()はjQuery 1.7で非推奨になり、バージョン1.9で削除されました。アプリケーションでjQueryを1.9.0にアップグレード.live()したところ、過去に大量の呼び出しを使用していたことがわかりました。

すべての.live()呼び出しを.on()呼び出しに移植しました。ほとんどの場合、これは単純な更新です(.live()ページの2番目のスニペットのような単純なケース)。しかし、いくつかの場所で私は次のようなものを持っています:

(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

2番目の引数は、オブジェクトではなくセレクターである必要があります。

$(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 に答える