8

私の Web フレームワークは、jQuery スクリプトを現在の最新バージョンである 1.9 に自動的に更新しました。

今、すべての私の:

$(".myclass").live("click", function() {...

もう働かないでください。私は主に、自分のページに html を埋める ajax と一緒に使用しました。

最後のバージョンでこの機能を置き換える方法を知っています。代わりに「on」を使用するように友人に言われましたが、「on」は同じ要素に固定されたままです。

説明、この例 (ajax なし) では、「+」アイコンを使用して「ul li リスト」を表示します。

$(".closed").live('click', function(){
    $("#ul_list_"+$(this).attr('id')).addClass("displayed").removeClass("hidden").show();
    $(this).addClass("openned").removeClass('closed');
    $(this).html('<i class="icon-minus"></i>');
});

$(".openned").live('click', function(){
    $("#ul_list_"+$(this).attr('id')).addClass("hidden").removeClass("displayed").hide();
    $(this).addClass("closed").removeClass('openned');
    $(this).html('<i class="icon-plus"></i>');
});

(スクリプトがこれまでで最も最適化されたものではないことはわかっていますが、うまくいきました。クラスを使用してリストを開いたり閉じたりしました。また、訪問者が JS を有効にしていない場合、何も隠されておらず、折りたたまれたすべてのリストが開かれます)

ノート:

4

3 に答える 3

25

ドキュメントはすでに例を提供しています:

後継者に関して .live() メソッドを書き直すのは簡単です。これらは、3 つのイベント添付メソッドすべてに対する同等の呼び出しのテンプレートです。

$(selector).live(events, data, handler); // jQuery 1.3+
$(document).delegate(selector, events, data, handler); // jQuery 1.4.3+
$(document).on(events, selector, data, handler); // jQuery 1.7+

だから:$(document).on("click", ".closed", function() { ... })

于 2013-01-23T12:23:04.760 に答える
7

on委任されたハンドラーで使用する必要があります。

$('#parent').on('click', '.closed', function() {
   // your code...
});

#parentページの読み込み時に使用できる最も近い親要素.closed(通常.closedは追加された要素) に置き換える必要があることに注意してください。

于 2013-01-23T12:23:26.313 に答える
1

onの代わりにを使用する必要がありliveます。live はバージョン 1.7 で非推奨になったため

于 2013-01-23T12:22:53.733 に答える