0

私は次のHTMLを持っています

<i class="up_icon" id="1" />
<p class="position">1</p>
<i class="down_icon" id="1" />

選択できます.up_icon#1ができません.down_icon#1

var u = $(".up_icon#1");     //=  [<i class=​"up_icon" id=​"1">​&lt;/i>​]

var d = $(".down_icon#1");   //=  []

ここで何が欠けていますか?

4

4 に答える 4

4

そのようなIDを複製しないでください。IDはドキュメント全体で一意である必要があります。

あなたの場合、jQuery属性セレクター関数を使用できます。下記参照、

<i class="up_icon" data-id="1"/>
<p class="position">1</p>
<i class="down_icon" data-id="1"/>

そして、あなたはそれらにアクセスすることができ.up_icon[data-id=1]ます.down_icon[data-id=1]

于 2012-11-07T21:38:49.227 に答える
1

複数のタグに同じIDを割り当てないでください

また:

HTML仕様から:

IDトークンとNAMEトークンは、文字([A-Za-z])で始まる必要があり、その後に任意の数の文字、数字([0-9])、ハイフン( "-")、アンダースコア( "_")を続けることができます。 、コロン( ":")、およびピリオド( "。")。

于 2012-11-07T21:36:52.597 に答える
1

can select .up_icon#1 but not .down_icon#1

これは、重複するIDが無効なHTMLであり、セレクターをスローするためです。

jQueryでは、ページ全体で一意のIDが必要です。そうでない場合、予期しない動作が発生します。

jQueryIDセレクターのドキュメントから取得

各id値は、ドキュメント内で1回だけ使用する必要があります。複数の要素に同じIDが割り当てられている場合、そのIDを使用するクエリは、DOMで最初に一致した要素のみを選択します。ただし、この動作に依存するべきではありません。同じIDを使用する複数の要素を持つドキュメントは無効です。

HTMLを次のように変更します。

<i class="up_icon" id="1" />
<p class="position">1</p>
<i class="down_icon" id="2" />

.up_icon#1これで、またはを選択できます.down_icon#2

明らかに、単純な数字以外のより説明的な識別子を適用して、何も繰り返されないようにする方法を見つけることができれば。
オプションのデータ属性data-value="1"を使用して、必要に応じてシーケンスまたはレコードIDを保存することもできます。jQueryセレクターは、データ属性またはクラスの同じ値で問題はありません。

于 2012-11-07T21:38:47.683 に答える
0

クラスとIDの定義を切り替える必要があります。代わりにこれを試してください:

<i id="up_icon" class="1" />
<p class="position">1</p>
<i id="down_icon" class="1" />

var u = $("#up_icon.1");

var d = $("#down_icon.1");
于 2012-11-07T21:38:40.397 に答える