이벤트에서 jQuery를 사용하여 클릭 된 요소를 얻습니까?


84

다음 코드를 사용하여 동적으로 생성 된 버튼을 클릭 할 때 감지합니다.

$(document).on("click",".appDetails", function () {
    alert("test");
});

일반적으로 방금했다면 클릭 한 요소를 가져 오는 데 $('.appDetails').click()사용할 수 있습니다 $(this). 위의 코드로 어떻게이 작업을 수행 할 수 있습니까?

예를 들면 :

$(document).on("click",".appDetails", function () {
    var clickedBtnID = ??????
    alert('you clicked on button #' + clickedBtnID);
});

답변:


114

가능한 한 간단합니다.

$(this)여기에서도 사용

$(document).on("click",".appDetails", function () {
   var clickedBtnID = $(this).attr('id'); // or var clickedBtnID = this.id
   alert('you clicked on button #' + clickedBtnID);
});

서버에서 캐싱 문제를 처리하고있는 것 같습니다. 죄송합니다.
Devil 's Advocate

53
ES6를 사용하는 사람들에게 경고합니다. 화살표 함수는 'this'를 설정하지 않으므로 이것이 부모가됩니다. 따라서 기본적으로 여기에서는 화살표 기능을 사용하지 마십시오.
thomas-peter

4
@ thomas-peter 나는 당신이 대답으로 바꾸라고 말합니다
Jack

2
@ thomas-peter 수십 분의 좌절감을 더 많이 절약했습니다. 감사합니다.
Milan Velebit

1
@ thomas-peter 당신이 방금 나를 구했습니다! 왜 30 분 정도 안 됐는지 알아 내려고했는데 ... 감사합니다!
kriskotoo BG

53

함수에 이벤트 매개 변수가 없습니다.

$(document).on("click",".appDetails", function (event) {
    alert(event.target.id);
});

6
이것은 나에게 완벽했습니다. 클릭 된 요소를 제공합니다. $ (this)는 이벤트가 첨부 된 요소 만 제공합니다.
Bill Tarbell 2015

이것은 완벽한 방법입니다. 감사합니다 :)
Swetabja Hazra

34

이를 처리하는 기존 방법은 ES6에서 잘 작동하지 않습니다. 대신 다음을 수행 할 수 있습니다.

$('.delete').on('click', event => {
  const clickedElement = $(event.target);

  this.delete(clickedElement.data('id'));
});

이벤트 대상은 클릭 한 요소이며 원하는 요소가 아닐 수 있습니다 (이벤트를 수신 한 하위 요소 일 수 있음). 실제 요소를 얻으려면 :

$('.delete').on('click', event => {
  const clickedElement = $(event.target);
  const targetElement = clickedElement.closest('.delete');

  this.delete(targetElement.data('id'));
});

0

간단한 방법은 데이터 속성을 HTML 태그에 전달하는 것입니다.

예:

<div data-id='tagid' class="clickElem"></div>

<script>
$(document).on("click",".appDetails", function () {
   var clickedBtnID = $(this).attr('data');
   alert('you clicked on button #' + clickedBtnID);
});
</script>
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.