Javascript 在jQuery中使用数组作为选择器
我在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
$(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();
});