如何使用jQuery按数据属性查找动态添加的元素?

时间:2015-07-14 08:55:09

标签: javascript jquery html

有一个元素是动态应用数据属性,如此

var tr = $('<tr>');
tr.data('template_id', 5);
table.find('tbody').append(tr);

这里有我们的tr。
...
在这里,我们希望通过数据属性

找到新添加的tr
var tr = table.find('[data-template_id="5"]');
console.log(tr) // tr.length = 0;

不幸的是,我们没有找到这种方式。
为什么会得到这个结果?

3 个答案:

答案 0 :(得分:9)

您遇到的问题是通过jQuery添加的data-*属性存储在其内部缓存中。它们不能作为DOM中的属性使用。考虑到这一点,您可以使用filter()来实现您的需求:

var $tr = table.find('tr').filter(function() {
    return $(this).data('template_id') == 5;
});
console.log($tr.length);

答案 1 :(得分:0)

尝试使用tr.data('template_id', 5)代替{{1}}。

答案 2 :(得分:-1)

我认为你可以使用

tr.attr('template_id', 5);