>웹 프론트엔드 >JS 튜토리얼 >jquery: 대리자가 이벤트를 반복적으로 트리거하는 문제에 대한 솔루션

jquery: 대리자가 이벤트를 반복적으로 트리거하는 문제에 대한 솔루션

黄舟
黄舟원래의
2017-06-26 10:16:392623검색

jquery: 대리자는 이벤트문제 해결 방법

<html>
<head>
<script type="text/javascript" src="http://www.w3school.com.cn/jquery/jquery.js"></script>
<style>
div{border:1px solid balck;padding:5px;margin:2px;}
</style>
</HEAD>
<body>
<div id="div1" >div1
    <div id="div1_1" >div1_1
        <div id="div1_1_1" >div1_1_1
            <span style="background:red; display:block; width:25px; height:25px;">span</span>
        </div>
    </div>
    <div id="div1_2" >div1_2
    </div>
</div>
</body>
<script type="text/javascript">
$(&#39;body&#39;).delegate(&#39;body>div&#39;,&#39;click&#39;,function(){alert("div");});
$(&#39;body&#39;).delegate(&#39;div>span&#39;,&#39;click&#39;,function(){alert("span");});
</script>
</HTML>

을 반복적으로 트리거합니다. 범위 영역을 클릭할 때 div 클릭 이벤트가 트리거되지 않는 것을 방지하는 방법은 무엇입니까? ? ?

$(&#39;body&#39;).delegate(&#39;div>span&#39;,&#39;click&#39;,function(evt){ evt.stopPropagation(); alert("span");  } );

스팬의 클릭 이벤트 버블링을 취소합니다. 답변은 1층에 나와 있습니다: e.stopPropagation()~

방법 1. 이벤트 버블링 방지
방법 2. 이벤트 트리거 결정,

$(&#39;body&#39;).delegate(&#39;body>div&#39;,&#39;click&#39;,function(){
if(e.target!=$(&#39;#div1_1_1&#39;).find(&#39;span&#39;)[0]) alert("div");
});

방법 1. 이벤트 버블링 방지
방법 2. 이벤트 트리거 지정

$(&#39;body&#39;).delegate(&#39;body>div&#39;,&#39;click&#39;,function(){
if(e.target!=$(&#39;#div1_1_1&#39;).find(&#39;span&#39;)[0]) alert("div");
});
$(&#39;body&#39;).delegate(&#39;body>div&#39;,&#39;click&#39;,function(e){
if(e.target!=$(&#39;#div1_1_1&#39;).find(&#39;span&#39;)[0]) alert("div");
});

해보았습니다

위 내용은 jquery: 대리자가 이벤트를 반복적으로 트리거하는 문제에 대한 솔루션의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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