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

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

一个新手
一个新手オリジナル
2017-09-13 10:05:582133ブラウズ


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

注: 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 サイトの他の関連記事を参照してください。

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