핸들러 내부에서 이벤트 핸들러가 첨부 된 요소를 어떻게 얻습니까?

스티븐 스미스

일반적으로 이벤트 핸들러를 요소에 연결할 때 다음과 같이 핸들러 함수에 전달 된 첫 번째 인수의 .target 멤버를 사용하여 요소에 액세스 할 수 있습니다.

button.on('click', function(e) {
  alert(e.target);
});

버튼 요소를 반환합니다.

내가 이해하려는 문제는 이벤트 핸들러가있는 요소 안에 요소가있을 때 이벤트의 대상이 핸들러가 연결된 요소가 아니라 내부 요소라는 것입니다. 이것은 이벤트 핸들러가 외부 요소에 첨부 된 데이터에 액세스해야 할 때 문제입니다.

<div class="outer" data-tag="i-need-this-data">
  <b>Click Me</b>
</div>

이 마크 업으로에 이벤트를 부착 .outer하고 클릭하면 Click Meevent.target이되는 발생합니다 <b>대신의를 <div>. 외부 클래스를 확인하고을 볼 때까지 DOM을 올린 .outer다음 그런 방식으로 데이터에 액세스하는 것과 같은 해결 방법을 사용해야하므로 문제가됩니다 . 이 동작의 예는이 JSFiddle에서 볼 수 있습니다 : https://jsfiddle.net/qce23qhw/

JSFiddle의 첫 번째 예제는 원하지 않는 동작을 보여줍니다. 내부 사각형을 클릭하면 event.target이 내부 사각형이됩니다. 두 번째 예는 내 해결 방법의 구현을 보여줍니다.

클릭 한 요소 대신 핸들러 내부에서 핸들러가 첨부 된 요소를 가져 오는 더 깨끗한 방법이 있습니까?

안녕 StackExchange

이미 루프에서 사용중인 요소를 사용하십시오. this현재 요소로도 설정됩니다.

$$('.two').each(function(element) {
    element.on('click', function(e) {
        alert(this.dataset.tag);
    });
});

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

예외를 던진 객체가 이벤트 핸들러에서 생성 된 경우 전역 이벤트 핸들러에는 세부 정보가 없습니다.

분류에서Dev

forEach에 추가 된 클릭 핸들러로 클릭 된 요소를 어떻게 얻을 수 있습니까?

분류에서Dev

이벤트 핸들러 외부에서 변수를 어떻게 사용할 수 있습니까?

분류에서Dev

다른 핸들러에서 angularjs 이벤트 핸들러를 어떻게 트리거 할 수 있습니까?

분류에서Dev

Android를 처음 사용하는 경우 프래그먼트 내부의 요소에 대한 이벤트 핸들러를 어떻게 초기화합니까?

분류에서Dev

요소가 페이지에있는 즉시 이벤트 핸들러를 HTML 요소에 첨부하는 방법이 있습니까?

분류에서Dev

이벤트 핸들러 내부의 이벤트 핸들러가 증가하고 있습니다.

분류에서Dev

이벤트 핸들러에 인수를 어떻게 전달합니까?

분류에서Dev

Caliburn.Micro는 Behavior 이벤트에 이벤트 핸들러를 첨부합니다.

분류에서Dev

부트 스트랩 테이블이 내 이벤트 핸들러를 지우는 것을 어떻게 막을 수 있습니까?

분류에서Dev

동적으로 추가 된 이벤트 핸들러는 자바 스크립트에서 이전 이벤트 핸들러를 비활성화합니다.

분류에서Dev

Jquery .on () 함수가 PHP에 의해 동적으로 생성 된 요소와 이벤트 핸들러를 올바르게 바인딩하지 않습니다.

분류에서Dev

.NET에서 이벤트 핸들러 내부에서 try catch를 적용 할 수 있습니까?

분류에서Dev

PhotoSwipe : 'init'이벤트 또는 플러그인이 라이트 박스를 열 때 이벤트 핸들러를 첨부하는 방법이 있습니까?

분류에서Dev

canvas.bind (event, handler)는 이벤트 핸들러에 이벤트를 어떻게 전달합니까?

분류에서Dev

Telerik MVC ClientTemplates에서 이벤트 핸들러를 어떻게 바인딩 할 수 있습니까?

분류에서Dev

요소 제거 후 jquery 이벤트 핸들러는 어떻게됩니까?

분류에서Dev

이 이벤트 핸들러를 jQuery 플러그인에 어떻게 바인딩합니까?

분류에서Dev

동적으로 추가 된 범위 요소에 이벤트 핸들러 추가

분류에서Dev

두 개의 비동기 연결된 이벤트 핸들러를 어떻게 수신합니까?

분류에서Dev

jQuery.bind로 생성 된 이벤트 핸들러를 어떻게 제거합니까?

분류에서Dev

React는 이벤트 핸들러에 전달 된 함수 / 콜백을 어떻게 처리합니까?

분류에서Dev

Express, NodeJS의 라우트 핸들러에서 호출 된 함수의 오류를 어떻게 처리합니까?

분류에서Dev

이 이벤트 핸들러에서 반복적 인 코드를 피하려면 어떻게해야합니까?

분류에서Dev

AppCenter SDK for C #에서 TrackError에 대한 이벤트 핸들러를 어떻게 등록합니까?

분류에서Dev

핸들러 내에서 토네이도 핸들러를 벤치마킹하려면 어떻게해야합니까?

분류에서Dev

이벤트 핸들러가 문서에 첨부되었는지 확인

분류에서Dev

이벤트 핸들러를 동적으로 생성 된 모달 창 요소에 연결하기 어려움

분류에서Dev

jquery 이벤트 핸들러에서 mvc 모델을 어떻게 동적으로 가져올 수 있습니까?

Related 관련 기사

  1. 1

    예외를 던진 객체가 이벤트 핸들러에서 생성 된 경우 전역 이벤트 핸들러에는 세부 정보가 없습니다.

  2. 2

    forEach에 추가 된 클릭 핸들러로 클릭 된 요소를 어떻게 얻을 수 있습니까?

  3. 3

    이벤트 핸들러 외부에서 변수를 어떻게 사용할 수 있습니까?

  4. 4

    다른 핸들러에서 angularjs 이벤트 핸들러를 어떻게 트리거 할 수 있습니까?

  5. 5

    Android를 처음 사용하는 경우 프래그먼트 내부의 요소에 대한 이벤트 핸들러를 어떻게 초기화합니까?

  6. 6

    요소가 페이지에있는 즉시 이벤트 핸들러를 HTML 요소에 첨부하는 방법이 있습니까?

  7. 7

    이벤트 핸들러 내부의 이벤트 핸들러가 증가하고 있습니다.

  8. 8

    이벤트 핸들러에 인수를 어떻게 전달합니까?

  9. 9

    Caliburn.Micro는 Behavior 이벤트에 이벤트 핸들러를 첨부합니다.

  10. 10

    부트 스트랩 테이블이 내 이벤트 핸들러를 지우는 것을 어떻게 막을 수 있습니까?

  11. 11

    동적으로 추가 된 이벤트 핸들러는 자바 스크립트에서 이전 이벤트 핸들러를 비활성화합니다.

  12. 12

    Jquery .on () 함수가 PHP에 의해 동적으로 생성 된 요소와 이벤트 핸들러를 올바르게 바인딩하지 않습니다.

  13. 13

    .NET에서 이벤트 핸들러 내부에서 try catch를 적용 할 수 있습니까?

  14. 14

    PhotoSwipe : 'init'이벤트 또는 플러그인이 라이트 박스를 열 때 이벤트 핸들러를 첨부하는 방법이 있습니까?

  15. 15

    canvas.bind (event, handler)는 이벤트 핸들러에 이벤트를 어떻게 전달합니까?

  16. 16

    Telerik MVC ClientTemplates에서 이벤트 핸들러를 어떻게 바인딩 할 수 있습니까?

  17. 17

    요소 제거 후 jquery 이벤트 핸들러는 어떻게됩니까?

  18. 18

    이 이벤트 핸들러를 jQuery 플러그인에 어떻게 바인딩합니까?

  19. 19

    동적으로 추가 된 범위 요소에 이벤트 핸들러 추가

  20. 20

    두 개의 비동기 연결된 이벤트 핸들러를 어떻게 수신합니까?

  21. 21

    jQuery.bind로 생성 된 이벤트 핸들러를 어떻게 제거합니까?

  22. 22

    React는 이벤트 핸들러에 전달 된 함수 / 콜백을 어떻게 처리합니까?

  23. 23

    Express, NodeJS의 라우트 핸들러에서 호출 된 함수의 오류를 어떻게 처리합니까?

  24. 24

    이 이벤트 핸들러에서 반복적 인 코드를 피하려면 어떻게해야합니까?

  25. 25

    AppCenter SDK for C #에서 TrackError에 대한 이벤트 핸들러를 어떻게 등록합니까?

  26. 26

    핸들러 내에서 토네이도 핸들러를 벤치마킹하려면 어떻게해야합니까?

  27. 27

    이벤트 핸들러가 문서에 첨부되었는지 확인

  28. 28

    이벤트 핸들러를 동적으로 생성 된 모달 창 요소에 연결하기 어려움

  29. 29

    jquery 이벤트 핸들러에서 mvc 모델을 어떻게 동적으로 가져올 수 있습니까?

뜨겁다태그

보관