ホームページ  >  記事  >  ウェブフロントエンド  >  jQuery 1.9 以降のバージョンで live が削除された後の代替メソッドの詳細な紹介

jQuery 1.9 以降のバージョンで live が削除された後の代替メソッドの詳細な紹介

黄舟
黄舟オリジナル
2017-06-26 09:31:541268ブラウズ

jQueryの公式説明によると、ライブメソッドは1.7で推奨されなくなり、このメソッドは1.9で削除されました。今後のコードでは代わりに on メソッドを使用することをお勧めします。 on メソッドは、
eventname、トリガー セレクター、イベント関数の 3 つのパラメーターを受け入れることができます。

特別な注意が必要なのは、on メソッドの中央にあるトリガー セレクターは、追加しようとしている HTML 要素 のクラス名、ID、または要素名であり、ライブ効果を実現するために使用します。

たとえば、htmlドキュメントにはすでに親のIDを持つpがあり、このp内に息子のクラスを持つスパンを動的に追加し、このスパンにイベントをバインドします。次のように記述する必要があります:

$('#parent').on('click','.son',function(){alert('test')});

このトリガー セレクターは、実際には、JQ 内のイベント パラメーターを決定する $(e.target).is(selector) であり、トリガー セレクターに一致するトリガー オブジェクトのみがトリガーされます。 。これはイベントのバブリング機構を使って行われており、オリジナルの live もバブリング機構を使用しているため、1.7 から 1.9 まで互換性のために live が存在する必要はありません。 この記事にはあまり内容がありません。この機能を使って何か意味のあることをやってみましょう〜 IE の以前のバージョンでは、マウスを押すと A タグに点線の境界線が表示されます。これはフォーカスが原因です。世界的なイベントで何かをする限り、この問題は解決できます。最新のブラウザではフォーカスがバブルしませんが、古いブラウザではフォーカスがバブルする可能性があります。したがって、下位バージョンのブラウザではライブをフォーカスに使用するのが効果的です。 jQuery 1.9 より前のバージョンでは、次のように記述できます:

$("a").live("focus",function(){  this.blur();
});

jQuery 1.9 以降は、live が削除されているため、次のように記述する必要があります:

$(document).on("focus","a",function(){  this.blur();
});

変更する場合にも注意すべき問題があります。ライブライティングメソッドから 書くときはコールチェーンを調整することを忘れないでください。 live の戻り値はイベントによってトリガーされたオブジェクトであり、on を使用するのはコンテナー オブジェクトであるためです。

//jQuery1.9-$("#panel").find("p").live("click",function(){
  alert("x");
}).addClass("x");//jQuery1.9+$("#panel").on("click","p",function(){
  alert("x");
}).find("p").addClass("x");   

最後のfind("p")に注意してください。そうでなければ問題はありません。

以上がjQuery 1.9 以降のバージョンで live が削除された後の代替メソッドの詳細な紹介の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。