0

とても簡単な質問があります。

jquery では、複数選択で、$(".class1, #id2") で要素を「or」演算子として選択するとします。これは、.class1 を持つすべての要素と #id2 を持つすべての要素が選択されるためです。

ただし、選択を「and」演算子にする方法はありますか? この例では、class1 と id2 の両方を持つすべての要素が選択されますが、class1 のみまたは id2 のみを持つ場合は、それらを選択してはなりません。

id2 を持つことができるのは 1 つの要素だけであることはわかっていますが、これは一般的な質問です。id2 は必要に応じて変更できます。たとえば、data-id などです。

4

3 に答える 3

4

セレクターをチェーンするだけです:

$('#id2.class1')

CSS と同じです。CSSセレクタ仕様から:

単純なセレクターは、タイプ セレクターまたはユニバーサル セレクターのいずれかであり、その直後に 0 個以上の属性セレクターID セレクター、または疑似クラスが任意の順序で続きます。すべてのコンポーネントが一致する場合、単純なセレクターは一致します。

型セレクターもユニバーサル セレクターも使用していないと思うかもしれませんが、ここではユニバーサル セレクターが暗黙的に使用されています。したがって、#id2は と同じ*#id2です。

また、クラス セレクターがここで言及されていないことに気付くかもしれませんが、それは言語固有のセレクター (HTML) であり、[class~="class1"].

したがって、ID セレクター、クラス セレクター、属性セレクター、疑似クラス セレクターを任意の順序で簡単に組み合わせることができ、オプションで型セレクターを前に付けることができます。

いくつかの例:

p.foo
a[rel=follow]
#foo.bar.baz[data-id=42]:hover

最後のものはと同等です

.baz.bar:hover[data-id=42]#foo
于 2012-08-14T22:15:05.547 に答える
2

id2を持つことができる要素は1つだけですが、これは一般的な質問です。たとえば、data-idなど、好きなようにid2を変更できます。

idとdata-idには大きな違いがあり、質問への回答の構文は完全に異なります。

IDとクラスを使用すると、要素がないか1つしか取得されないため(一意のIDが必要なため)、「and」が少し冗長になります。

$("#myDiv.myClass") // Should in theory only return a single element

ただし、同じデータIDとクラスを持つ要素をクエリすると、複数の要素を取り戻すことができます。

共通の属性とクラス値を探すと、次のようになります。

$(".myClass[data-id='myDiv']")​; // Can return multiple elements

デモを見る

于 2012-08-14T22:20:57.647 に答える
2

次のことを試してください。

 $("#id2.class1") // selects an element with id of 'id2' and class of 'class1' 

またはAttribute Equalsセレクターを使用して:

 $(".class1[id='id2']")
于 2012-08-14T22:15:15.233 に答える