<table id="table1">
<tr>
<td class="rb-o" data-id="1">a</td>
<td class="rb-o" data-id="2">b</td>
<td class="rb-o" data-id="3">c</td>
</tr>
<tr>
<td class="rb-o" data-id="4"></td>
<td class="rb-o" data-id="5"></td>
<td class="rb-o" data-id="6"></td>
</tr>
</table>
我想要隐藏整个<td>
,但前提是它的所有<data-id>
都在数组列表中。该表是动态生成的。
我的jQuery:
myarray =["2", "4", "5"] ;
$('.rb-o').each(function(index) {
if (myarray[index]) {
$(this).attr('data-id', myarray[index]).show();
}
else{
$(this).attr('data-id', myarray[index]).hide();
}
不能正常工作。
答案 0 :(得分:6)
尝试使用数组中的值创建属性过滤器,并使用它来过滤td
s
myarray = ["2", "4", "5"];
$('.rb-o').filter($.map(myarray, function (val) {
return '[data-id="' + val + '"]'
}).join()).hide()
演示:Fiddle
答案 1 :(得分:3)
进行选择并显示比赛。过滤选择,仅返回数组中存在data-id
的选择。隐藏剩余的比赛。
var myarray = [2, 4, 5];
$('.rb-o').show().filter(function(){
return $.inArray($(this).data('id'), myarray) !== -1
}).hide()
如果数组值必须是字符串,则需要将从.data()
返回的值转换为包含$.inArray()
的字符串:
答案 2 :(得分:1)
尝试在Jquery中使用$.inArray()
,
$('.rb-o').each(function(){
if($.inArray($(this).data('id'), myarray) > -1){
$(this).hide()
}
});