일반적과 같이 핸들러 함수에 전달 된 첫 번째 인수의 .target 멤버를 사용하여 요소에 액세스 할 수 있습니다이벤트 처리기가 처리기 내부에서 첨부 된 요소를 얻으려면 어떻게해야합니까? 요소에 이벤트 처리기를 부착 할 때
button.on('click', function(e) {
alert(e.target);
});
이 버튼 요소를 반환합니다.
내가 이해하려고하는 문제는 이벤트 처리기가있는 요소 안에 요소가있을 때 해당 이벤트의 대상은 처리기가 연결된 내부 요소가 아니라 내부 요소입니다. 내 이벤트 핸들러가 외부 요소에 첨부 된 데이터에 액세스해야 할 때 문제가됩니다. 이 마크 업으로
<div class="outer" data-tag="i-need-this-data">
<b>Click Me</b>
</div>
,
.outer
에 이벤트를 부착하고 event.target 대신
<div>
의
<b>
인 발생합니다
Click Me
클릭. 외부 클래스를 확인하고 DOM을 올라가서
.outer
을 볼 때까지 그런 식으로 데이터에 액세스하는 등의 해결 방법을 사용해야하므로 문제가됩니다. 이 동작의 예제는이 JSFiddle에서 볼 수 있습니다.
https://jsfiddle.net/qce23qhw/
JSFiddle의 첫 번째 예는 내부 스퀘어를 클릭하면 event.target이 내부 정사각형이됩니다. 두 번째 예는 내 대안의 구현을 보여줍니다.
클릭 한 요소 대신 처리기 내부에서 처리기가 연결된 요소를 가져 오는 더 명확한 방법이 있습니까?
내 목표가 핸들러 함수를 재사용한다는 점을 추가해야합니다. 즉, 'element.on ('click ', handleClick)'처럼 보이므로 요소는 handleClick에서 정의되지 않습니다. –
@StephenSmith 업데이트 내 대답 – FrankerZ
눈부신, 나는 '이'에 대해 잊어 버린 것을 믿을 수 없습니다. 감사! –