1. JS 이벤트 버블링이란 무엇입니까?
객체에서 특정 유형의 이벤트(예: onclick 이벤트)를 트리거하면 이 이벤트가 이 핸들러를 호출합니다. 이 이벤트 핸들러가 정의되지 않았거나 이벤트가 true를 반환하는 경우 이 이벤트는 처리될 때까지(부모 개체의 모든 유사한 이벤트가 활성화됨) 내부에서 외부로 이 개체의 부모 개체에 전파됩니다. 또는 그것은 문서 개체(일부 브라우저의 창)인 개체 계층의 최상위 수준에 도달했습니다.
2. 차단 방법
방법 1: event.stopPropagation()
<div> <p>段落文本内容 <input type="button" value="点击" /> </p> </div>
// 为所有div元素绑定click事件 $("div").click( function(event){ alert("div-click"); } ); //为所有p元素绑定click事件 $("p").click( function(event){ alert("p-click"); } ); //为所有button元素绑定click事件 $(":button").click( function(event){ alert("button-click"); // 阻止事件冒泡到DOM树上 event.stopPropagation(); // 只执行button的click,如果注释掉该行,将执行button、p和div的click (同类型的事件) } );
방법 2: event.target
이제 이벤트 핸들러의 변수 event가 이벤트 개체를 보유합니다. event.target 속성은 이벤트가 발생한 대상 요소를 저장합니다. 이 속성은 DOM API에 지정되지만 모든 브라우저에서 구현되는 것은 아닙니다. jQuery는 이 속성을 모든 브라우저에서 사용할 수 있도록 이 이벤트 개체에 필요한 확장을 만듭니다. .target을 사용하면 이벤트를 처음 수신한 DOM 요소(예: 실제로 클릭된 요소)를 확인할 수 있습니다. 또한 이것이 이벤트를 처리하는 DOM 요소를 참조한다는 것을 알고 있으므로 다음 코드를 작성할 수 있습니다.
$(document).ready(function(){ $('#switcher').click(function(event){ $('#switcher .button').toggleClass('hidden'); }) }) $(document).ready(function(){ $('#switcher').click(function(event){ if(event.target==this){//判断是否是当前绑定事件的元素元素触发的该事件 $('#switcher .button').toggleClass('hidden'); } }) })
이때의 코드는 클릭된 요소가
위 내용은 JavaScript에서 이벤트 버블링을 방지하는 두 가지 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!