0

私はhttp://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.jsをしばらく使用しており、すべて問題ありませんでしたが、1.8.3 はかなり古くなったので、最新の jQuery に移行することにしました。そして突然、いくつかのことが機能しなくなりました: Quicksand プラグインと私自身の jQuery コードの一部 (スライダーのすべてのスライドの下に追加データを表示します)。

何が問題なのかを理解するのを手伝ってもらえますか? それとも、1.8.3 より上のバージョンの jQuery に移行する価値はないのでしょうか? Jsfiddleを確認してください。

HTML:

<a href="#" class="show" data-show="first">SHOW</a>
<a href="#" class="show" data-show="second">SHOW</a>

<div id="first">First paragraph.</div>
<div id="second">Second paragraph</div>

JS:

jQuery(".show").live("click", function (e) {
    var slide = '#' + jQuery(this).data('show');
    jQuery(slide).slideToggle();
    e.preventDefault();
});

CSS:

div { display: none; }

ここに動作するjsfiddleがあります:http://jsfiddle.net/ABrna/

jQuery を 1.9.1 または 2.0 に変更して、[実行] をクリックしてみてください。スクリプトが機能しなくなります。なんで?

4

4 に答える 4

4

.live() メソッドは jQuery 1.7 以降非推奨となり、1.9 で削除されました。

http://jquery.com/upgrade-guide/1.9/#live-removed

于 2013-05-14T12:37:33.460 に答える
3

jQuery 1.7 以降、.live() メソッドは非推奨になりました。.on() を使用して、イベント ハンドラーをアタッチします。古いバージョンの jQuery のユーザーは、.live() よりも .delegate() を使用する必要があります。

ドク

于 2013-05-14T12:37:44.290 に答える
3

.live()委任を使用することと同等.on()です:

jQuery(document).on("click",".show", function (e) {
    var slide = '#' + jQuery(this).data('show');
    jQuery(slide).slideToggle();
    e.preventDefault();
});

ただし、委任をドキュメント レベルで設定するのではなく、代わりに最も近い静的コンテナーを使用する必要があります。

于 2013-05-14T12:38:50.697 に答える
-1

jQuery 2.0 では live 関数が非推奨になりました。詳細については、http://blog.jquery.com/2013/04/18/jquery-2-0-released/を参照してください。

于 2013-05-14T12:37:36.290 に答える