>  기사  >  웹 프론트엔드  >  jquery는 이벤트 버블링을 방지하고 해당 솔루션을 제공합니다.

jquery는 이벤트 버블링을 방지하고 해당 솔루션을 제공합니다.

一个新手
一个新手원래의
2017-09-13 10:05:582081검색


동적으로 추가된 태그에 대한 라이브 이벤트

참고: 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.