有一个元素是动态应用数据属性,如此
var tr = $('<tr>');
tr.data('template_id', 5);
table.find('tbody').append(tr);
这里有我们的tr。
...
在这里,我们希望通过数据属性
var tr = table.find('[data-template_id="5"]');
console.log(tr) // tr.length = 0;
不幸的是,我们没有找到这种方式。
为什么会得到这个结果?
答案 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);