클릭 이벤트 리스너가 바인딩 된 링크가 있습니다. 클릭 할 때 클릭 이벤트 리스너가 문서에 첨부됩니다.이 때 이벤트는 쉽게 제거 할 수 있도록 네임 스페이스로 표시됩니다. 두 번째 이벤트를 연결하면 즉시 시작됩니다. 왜 이런 일이 발생합니까? 내 생각 엔 새 이벤트가 문서에 첨부 될 때 이벤트가 여전히 dom 트리 위로 버블 링되고 있다는 것입니다. 이 때문에 두 이벤트를 모두 트리거합니다. JSFiddle을 참조하십시오.이벤트 리스너 내에서 jQuery 바인딩 이벤트
HTML
<a href="#" id="example">Click Me</a>
자바 스크립트
$('#example').on('click', function(e) {
$(document).on('click.example', function(e) {
alert('example event triggered');
});
});
내가 달성하기 위해 시도하고 그것이 내가 DOM 요소를 삽입 버튼을 클릭에 있습니다. 삽입 될 때 삽입 된 요소 외부에서 클릭 이벤트가 발생했는지 감지하기 위해 트리거 될 때 이벤트 대상을 검사하는 문서에 이벤트 수신기를 첨부하려고합니다. 대상이 그 안에 있으면 아무 것도 수행하지 않아야합니다. 대상이 요소 외부에 있으면 요소를 숨겨야합니다.
의 ... 모든 클릭에 희망 촬영 한 치료를 새 처리기를 추가해서는 안 아주 이상하고 내 의견으로는 잘못 – noobed
주어진 예제에서 당신은 정확합니다, 그렇게 할 것입니다. 내 실제 코드에는 이미 이벤트 리스너가 있는지 여부를 확인하기 위해 검사가 실행되고 있으므로 다시 연결되지 않습니다. 생성 된 요소 외부를 클릭하면 이벤트는 해제 된 상태로 언 바운드됩니다. – aronkerr
"init 메소드"에서 이벤트를 바인드하지 않는 이유는 무엇입니까? 이 방법은 런타임에 상황을 점검하기 위해 삶을 조금 더 어렵게 만드는 대신 한 번만 바인딩합니다. – noobed