Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to find dynamically added element by data attribute using jQuery?

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?

like image 865
abdulmanov.ilmir Avatar asked Dec 19 '22 02:12

abdulmanov.ilmir


1 Answers

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);
like image 78
Rory McCrossan Avatar answered Dec 24 '22 00:12

Rory McCrossan