jQuery使用AND和OR运算符选择属性

The*_*ndr 92 jquery operators find jquery-selectors

我正在考虑,如果在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>
Run Code Online (Sandbox Code Playgroud)

我想选择所有元素,myc="blue"但只选择那些myid设置为1或3 的元素.

所以我尝试过:

a=$('[myc="blue"] [myid="1"]  [myid="3"]');
Run Code Online (Sandbox Code Playgroud)

但它不起作用,同样在这里:

a=$('[myc="blue"] && [myid="1"] || [myid="3"]');
Run Code Online (Sandbox Code Playgroud)

没有编写特殊的过滤功能可以吗?

Gab*_*abe 177

操作

a=$('[myc="blue"][myid="1"][myid="3"]');
Run Code Online (Sandbox Code Playgroud)

操作,使用逗号

a=$('[myc="blue"],[myid="1"],[myid="3"]');
Run Code Online (Sandbox Code Playgroud)

正如@Vega评论的那样:

a=$('[myc="blue"][myid="1"],[myc="blue"][myid="3"]');
Run Code Online (Sandbox Code Playgroud)

  • 我想,他想要的是 `myc == blue &amp;&amp; (id == 1 || id == 3)` (2认同)
  • 如果我使用`a=$('[myc="blue"] [myid="1"],[myid="3"]');`这是否意味着`([myc="blue"] AND [myid ="1"]) OR [myid="3"]` 或 `([myc="blue"]) AND ([myid="1"] OR [myid="3"])` 我正在寻找第二个//编辑:感谢您的更新!:-) (2认同)

Fel*_*ing 16

使用多重选择器[docs](OR)简单地使用.filter() [docs](AND ):

$('[myc="blue"]').filter('[myid="1"],[myid="2"]');
Run Code Online (Sandbox Code Playgroud)

一般来说,链接选择器,就像a.foo.bar[attr=value]某种AND选择器.

jQuery有关于受支持选择器的大量文档,值得一读.


Sel*_*gam 10

如何编写如下所示的过滤器,

$('[myc="blue"]').filter(function () {
   return (this.id == '1' || this.id == '3');
});
Run Code Online (Sandbox Code Playgroud)

编辑: @Jack谢谢..完全错过了..

$('[myc="blue"]').filter(function() {
   var myId = $(this).attr('myid');   
   return (myId == '1' || myId == '3');
});
Run Code Online (Sandbox Code Playgroud)

DEMO


Guf*_*ffa 5

选择器中的and运算符只是一个空字符串,or运算符是逗号.

但是没有分组或优先级,因此您必须重复以下条件之一:

a=$('[myc=blue][myid="1"],[myc=blue][myid="3"]');
Run Code Online (Sandbox Code Playgroud)


Ja͢*_*͢ck 5

首先找到在所有情况下发生的条件,然后过滤特殊条件:

$('[myc="blue"]')
    .filter('[myid="1"],[myid="3"]');
Run Code Online (Sandbox Code Playgroud)