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>
myc="blue"
のすべての要素を選択しますが、myid
が1または3に設定されている要素のみを選択します。
だから私は試しました:
a=$('[myc="blue"] [myid="1"] [myid="3"]');
しかし、ここでは同じように機能しません:
a=$('[myc="blue"] && [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"]');
シンプルな使用 .filter()
[ドキュメント] (AND) 複数セレクターを使用して [ドキュメント] (OR):
$('[myc="blue"]').filter('[myid="1"],[myid="2"]');
一般に、a.foo.bar[attr=value]
などのセレクターの連鎖は、ある種のANDセレクターです。
jQueryには、サポートされているセレクターに関する 詳細なドキュメント がありますので、読む価値があります。
以下のようなフィルターを作成してみてください。
$('[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');
});
最初にすべての状況で発生する条件を見つけてから、特別な条件をフィルタリングします。
$('[myc="blue"]')
.filter('[myid="1"],[myid="3"]');
セレクターのand演算子は空の文字列であり、or演算子はコンマです。
ただし、グループ化や優先順位はないため、次のいずれかの条件を繰り返す必要があります。
a=$('[myc=blue][myid="1"],[myc=blue][myid="3"]');
あなたの特別な場合には
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"]');
2つの属性セレクターを組み合わせるとANDが得られ、コンマを使用するとORが得られます。