103

我正在使用以下代码来检测何时单击动态生成的按钮。

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

通常,如果您刚刚这样做,$('.appDetails').click()您可以使用$(this)来获取被点击的元素。我将如何使用上面的代码完成此操作?

例如:

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

5 回答 5

133

尽可能简单

也用$(this)在这里

$(document).on("click",".appDetails", function () {
   var clickedBtnID = $(this).attr('id'); // or var clickedBtnID = this.id
   alert('you clicked on button #' + clickedBtnID);
});
于 2013-04-18T19:50:36.983 回答
60

您缺少函数上的事件参数。

$(document).on("click",".appDetails", function (event) {
    alert(event.target.id);
});
于 2013-04-18T19:53:45.777 回答
43

传统的处理方式在 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'));
});
于 2017-10-25T05:58:36.927 回答
2

有很多方法可以做到这一点

第一种方法是使用 javascript 目标

$(document).on("click",".appDetails", function (event) {
    var clickebtn = target.event.id;
});
于 2021-07-14T12:31:24.390 回答
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>
于 2020-05-09T19:49:23.697 回答