Get clicked element using jQuery on event?

后端 未结 4 2098
深忆病人
深忆病人 2020-11-28 04:49

I\'m using the following code to detect when a dynamically generated button is clicked.

$(document).on(\"click\",\".appDetails\", function () {
    alert(\"t         


        
相关标签:
4条回答
  • 2020-11-28 05:35

    You are missing the event parameter on your function.

    $(document).on("click",".appDetails", function (event) {
        alert(event.target.id);
    });
    
    0 讨论(0)
  • 2020-11-28 05:40

    As simple as it can be

    Use $(this) here too

    $(document).on("click",".appDetails", function () {
       var clickedBtnID = $(this).attr('id'); // or var clickedBtnID = this.id
       alert('you clicked on button #' + clickedBtnID);
    });
    
    0 讨论(0)
  • 2020-11-28 05:44

    A simple way is to pass the data attribute to your HTML tag.

    Example:

    <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>
    
    0 讨论(0)
  • 2020-11-28 05:47

    The conventional way of handling this doesn't play well with ES6. You can do this instead:

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

    Note that the event target will be the clicked element, which may not be the element you want (it could be a child that received the event). To get the actual element:

    $('.delete').on('click', event => {
      const clickedElement = $(event.target);
      const targetElement = clickedElement.closest('.delete');
    
      this.delete(targetElement.data('id'));
    });
    
    0 讨论(0)
提交回复
热议问题