jQuery使用AND和OR运算符按属性选择
我在考虑,在jQuery中是否可以使用AND和OR通过命名属性选择元素 例如:jQuery使用AND和OR运算符按属性选择,jquery,jquery-selectors,find,operators,Jquery,Jquery Selectors,Find,Operators,我在考虑,在jQuery中是否可以使用AND和OR通过命名属性选择元素 例如: <div myid="1" myc="blue">1</div> <div myid="2" myc="blue">2</div> <div myid="3" myc="blue">3</div> <div myid="4">4</div> 但它不起作用,这里也一样: a=$('[myc="blue"] &&am
<div myid="1" myc="blue">1</div>
<div myid="2" myc="blue">2</div>
<div myid="3" myc="blue">3</div>
<div myid="4">4</div>
但它不起作用,这里也一样:
a=$('[myc="blue"] && [myid="1"] || [myid="3"]');
是否可以不编写特殊的过滤器函数?编写如下过滤器如何
$('[myc="blue"]').filter(function () {
return (this.id == '1' || this.id == '3');
});
编辑:@Jack谢谢。。完全错过了
$('[myc="blue"]').filter(function() {
var myId = $(this).attr('myid');
return (myId == '1' || myId == '3');
});
和操作
a=$('[myc="blue"][myid="1"][myid="3"]');
或操作时,请使用逗号
a=$('[myc="blue"],[myid="1"],[myid="3"]');
正如@Vega所评论的:
a=$('[myc="blue"][myid="1"],[myc="blue"][myid="3"]');
JQuery使用CSS选择器来选择元素,因此您只需使用多个规则,将它们用逗号分隔,如下所示:
a=$('[myc="blue"], [myid="1"], [myid="3"]');
编辑:
对不起,你想要蓝色和1或3。那么:
a=$('[myc="blue"][myid="1"], [myid="3"]');
将两个属性选择器放在一起,使用逗号可以得到或。要使用前面所述的逻辑操作正确地选择元素,只需对
和操作使用jQuery.filter()
,而不是“特殊筛选函数”。对于或
操作,还需要jQuery.add()
var elements = $('[myc="blue"]').filter('[myid="1"').add('[myid="3"');
或者,也可以在单个选择器中使用速记,将选择器组合在一起作为和
,用逗号分隔作为或
:
var elements = $('[myc="blue"][myid="1"], [myid="3"]');
选择器中的and运算符只是一个空字符串,or运算符是逗号
但是,没有分组或优先级,因此必须重复以下条件之一:
a=$('[myc=blue][myid="1"],[myc=blue][myid="3"]');
$('[myc="blue"]')
.filter('[myid="1"],[myid="3"]');
在你的特殊情况下
a=$('[myc="blue"][myid="1"],[myc="blue"][myid="3"]');
简单使用(和)使用(或):
通常,链接选择器,如a.foo.bar[attr=value]
是一种AND选择器
jQuery提供了有关支持的选择器的信息,值得一读。首先查找所有情况下出现的条件,然后筛选特殊条件:
a=$('[myc=blue][myid="1"],[myc=blue][myid="3"]');
$('[myc="blue"]')
.filter('[myid="1"],[myid="3"]');
我想,他想要的是myc==blue&&(id==1 | | id==3)
如果我使用a=$('[myc=“blue”][myid=“1”],[myid=“3”]”)
是指([myc=“blue”]和[myid=“1”])或[myid=“3”]
或([myc=“blue”])和([myid=“1”]或[myid=“3”])
我在找第二个//编辑:谢谢你的更新!:-)我想,他想要的是myc==blue&&(id==1 | | id==3)
你需要重复第二个例子中的[myc=“blue”]
选择器。注意:你不应该像myc
和myid
那样构建自己的属性。如果您使用HTML5在它们前面加上数据-
:数据myc
和数据myid
@RoToRa,HTML5中是否有文档说明您应该这样做?我看到的大多数网站都会使用开发者大脑当时想的任何东西……仅仅因为人们这么做,并不意味着它是正确的。请参阅:“作者不得使用本规范或其他适用规范不允许使用的元素、属性或属性值,因为这样做会使语言在未来的扩展变得非常困难。”这是一个很好的问题的糟糕例子。不同的元素类型,比如输入,你需要这些引号吗?我的意思是为了一致性。。可能只有我一个人@维加:像blue
这样的简单字符串不需要引号,但我不确定数值,所以我保留了它们。你知道吗,这比gabe的答案快吗?我不知道,也许,也许不是。