如果data-id在数组中,则隐藏td

时间:2014-06-16 10:08:31

标签: jquery html

<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();
    }

不能正常工作。

3 个答案:

答案 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()

JSFiddle

如果数组值必须是字符串,则需要将从.data()返回的值转换为包含$.inArray()的字符串:

JSFiddle

答案 2 :(得分:1)

尝试在Jquery中使用$.inArray()

$('.rb-o').each(function(){
 if($.inArray($(this).data('id'), myarray) > -1){
   $(this).hide()
 }
});

DEMO