Javascript 在jQuery中使用数组作为选择器

Javascript 在jQuery中使用数组作为选择器,javascript,jquery,Javascript,Jquery,我在jQuery中遇到了一点小麻烦 $(document).on('change', '.filter-status, .filter-week', function() { var filter = []; filter.push({ week: $('.filter-week').val(), status: $('.filter-status').val(), }) //filter.week('week', $('.fil

我在jQuery中遇到了一点小麻烦

$(document).on('change', '.filter-status, .filter-week', function() {
    var filter = [];
    filter.push({
        week: $('.filter-week').val(),
        status: $('.filter-status').val(),
    })

    //filter.week('week', $('.filter-week').val());
    filter.status = $('.filter-status').val();
    var tags = [];
    //console.log(filter);
    $.each(filter, function(index, value) {
        if (value != 'all') {
            tags.push(value);
        }
    });
});
我有一个表行,如下所示:

<tr>
    <td>1</td>
    <td>Some text...
    <td>
        <button class="tag" data-tag="1234"></button>
        <button class="tag" data-tag="1235"></button>
    </td>
</tr>
<tr>
    <td>2</td>
    <td>Some text...
    <td>
        <button class="tag" data-tag="1234"></button>
    </td>
</tr>

1.
一些文字。。。
2.
一些文字。。。
我试图做的是隐藏一个不包含标记1234和1235的tr

编辑 更清楚一点


tags对象包含id 1234和1235。我想隐藏所有没有这两个标记的表行。因此,如果一个表行只有1234,那么它应该被隐藏。如果它只有1235,它也应该被隐藏。如果同时包含1234和1235,则不应隐藏该元素。

您可以找到该元素,然后使用
父元素()返回以查找相关的

编辑了我误解问题的适当评论:

隐藏不包含标记1234和1235的tr

当我阅读时,我错过了而不是

你可以使用
.filter()

$('table tr')。过滤器(函数(i,el){
返回$(el).find('button').eq(0).data('tag')!='1234'||
$(el).find('button').eq(1).data('tag')!='1235'
}).hide()

1.
一些文字。。。
2.
一些文字。。。

以下内容将隐藏与标记数组具有相同值的任何行(我已向按钮列添加了一个类)

比较函数取自

Array.prototype.compare=函数(testArr){
如果(this.length!=testArr.length)返回false;
对于(变量i=0;i

1.
一些文字。。。
2.
一些文字。。。
3.
一些文字。。。

您应该实际使用
$(':不是([data tag=“1235”])
谢谢。我想是的。我要做的是使用
标记
对象来实现这一点。更清楚地说:隐藏所有不包含tags对象中的tags的表行。对不起,你是对的,我误解了这个问题的相反含义。我编辑它。@Pete它们作为整数在
标记中。我曾考虑使用
join
来内爆它们,但这是不可能的,因为我需要用data tag=…将它们包围起来,这样就行了。但是,ID应该来自我的标记对象。它也可以是三个或不同内容的ID。很好,但我正在寻找完全相反的。如果表行同时具有两个标记,则应显示该行。否则它应该被隐藏。@Peter请看一下代码段,第一个代码段只显示包含两个标记的表行,第二个代码段显示包含两个标记的表行以及附加标记。我的评论可能会产生误导,因为如果值相同,我会隐藏行(我在编辑时忘记更改它,以相反的方式更改过滤器)
$(':not([data-tag="1235"])').each(function() {
     $(this).parents('tr').hide();
});