Reputation:
I'm using the following code to detect when a dynamically generated button is clicked.
$(document).on("click",".appDetails", function () {
alert("test");
});
Normally, if you just did $('.appDetails').click()
you could use $(this)
to get the element that was clicked on. How would I accomplish this with the above code?
For instance:
$(document).on("click",".appDetails", function () {
var clickedBtnID = ??????
alert('you clicked on button #' + clickedBtnID);
});
Upvotes: 128
Views: 277913
Reputation: 71
$(".masonry__img").click((e) => {
console.log(e.currentTarget.currentSrc);
});
This will add an onClick handler to each image with the class masonry__img.
Upvotes: 1
Reputation: 103
There are many ways you can do that
The first method is by using the javascript target
$(document).on("click",".appDetails", function (event) {
var clickebtn = target.event.id;
});
Upvotes: 2
Reputation: 103
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>
Upvotes: 0
Reputation: 36531
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);
});
Upvotes: 168
Reputation: 1134
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'));
});
Upvotes: 56
Reputation: 2187
You are missing the event parameter on your function.
$(document).on("click",".appDetails", function (event) {
alert(event.target.id);
});
Upvotes: 72