I have a dynamic table list of around 40 rows each with an edit button containing a date field. I also have the following click event script trying to attach to each button via a common class which needs to access the value of a data- attribute within the button image code seen further below:
$('.showEdt').each(function () {
var $this = $(this);
$(this).on("click",$this.data('eValz'), function () {
alert(this);
});
});
Example of the edit buttons which are dynamically generated:
<img src="edit.png" title="edit" class="showEdt" data-evalz="(eyCKeVua/TNF117)" />
Problem:
The script loads ok, when the edit button is clicked the alert displays: [object HTMLImageElement] instead of the data-evalz value ??
Please provide suggestions of how I can access the data unique to the button that is clicked?
If you're changing the context of 'this' keyword to something else, you can retrieve the data directly from the 'event' object like so:
I hope the example above is clear...
or just from the event
You're not using the
on
function correctly. Here's one way you can do this: FIDDLEAlso, notice you've written
eValz
instead ofevalz
on your code. Data attributes are case-sensitive so be careful with how you write them.If your data attribute is known, you can do it directly with an attribute selector in jQuery, like this:
Fiddle here.