ホームページ > ウェブフロントエンド > jsチュートリアル > jqueryによるイベントバブリングの防止とその解決策

jqueryによるイベントバブリングの防止とその解決策

一个新手
リリース: 2017-09-13 10:05:58
オリジナル
2105 人が閲覧しました


動的に追加されたタグのライブイベント

注: jquery はバージョン 1.8 以降、ライブイベントをサポートしなくなりました

実際のプロジェクトで発生した問題、動的に追加されたタグ
Live はバブリングの発生を防ぎます。 return false も e.stopPropagation() もバブリングの発生を防ぐことはできません
以下は私がまとめた例です

html
<p id="box"> 
  <a href="javascript:;" class="delete">init html</a>
</p> 
<button id="add">add html</button>
ログイン後にコピー
jq
 $(function() {

     // 用click事件
    $(document).click( function(event) {
        console.log(&#39;click&#39;);
        event.stopPropagation();
    });

    // 用delegate事件
    $(document).delegate(&#39;.delete&#39;,&#39;click&#39;, function(event) {
        console.log(&#39;delegate&#39;);
        event.stopPropagation();
    });

    // 用live事件
    $(&#39;.delete&#39;).live(&#39;click&#39;, function(event) {
        console.log(&#39;live&#39;);
        event.stopPropagation();
        //return false;
    });

    // 新添加的a标签
    $(&#39;#add&#39;).click(function() {
        var html = &#39;<a href="javascript:;" class="delete">new html 1</a>&#39;;
        $(&#39;#box&#39;).append(html);
    });

    $(&#39;#box&#39;).click(function() {
        console.log(&#39;box emit&#39;);
    });

});
ログイン後にコピー

解決策:
event.stopPropagation() がクリックに対してバブリングを防ぐのに効果的であることがわかっているので、新しく動的に追加されたラベルにクリックイベントをバインドできます。

以上がjqueryによるイベントバブリングの防止とその解決策の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート