There is an element to which is dynamically applied data attribute like this
var tr = $('<tr>');
tr.data('template_id', 5);
table.find('tbody').append(tr);
Here we have our tr on the table.
...
Here we want to find our newly added tr by data attribute
var tr = table.find('[data-template_id="5"]');
console.log(tr) // tr.length = 0;
Unfortunately, we have no found tr this way.
Why it is getting this result?
The issue you have is that data-*
attributes added via jQuery are stored in its internal cache. They are not available as attributes in the DOM. With that in mind, you can use filter()
to achieve what you require:
var $tr = table.find('tr').filter(function() {
return $(this).data('template_id') == 5;
});
console.log($tr.length);
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With