同じID値を持つ要素が複数ある場合、jQueryはどのように動作するのですか?
2023-09-15 04:29:15
質問
GoogleのAdWordsサイトからデータを取得するのですが、そのデータには複数の要素に同じ
id
.
次の3つのクエリが同じ答え(2)にならない理由を教えてください。
HTMLです。
<div>
<span id="a">1</span>
<span id="a">2</span>
<span>3</span>
</div>
JSです。
$(function() {
var w = $("div");
console.log($("#a").length); // 1 - Why?
console.log($("body #a").length); // 2
console.log($("#a", w).length); // 2
});
どのように解決するのですか?
同じIDの要素を2つ持つことは、W3Cの仕様によると、有効なhtmlではありません。
CSSセレクタがIDセレクタのみを持つ場合(そして特定のコンテキストで使用されない場合)、jQueryはネイティブの
document.getElementById
メソッドを使用し、その ID を持つ最初の要素のみを返します。
しかし、他の2つの例では、jQueryはSizzleセレクタエンジンに依存しています(あるいは
querySelectorAll
が利用可能な場合)、明らかに両方の要素が選択されます。結果はブラウザごとに異なる可能性があります。
しかし、同じページに同じIDを持つ2つの要素を持つことは決してあってはなりません。CSSで必要な場合は、代わりにclassを使用します。
どうしても重複したIDで選択しなければならない場合は、属性セレクタを使用します。
$('[id="a"]');
フィドルを見てみましょう。 http://jsfiddle.net/P2j3f/2/
注意 可能であれば、以下のようにタグセレクタでそのセレクタを修飾する必要があります。
$('span[id="a"]');
関連
-
[解決済み] jQueryを使って要素のIDを取得するにはどうすればよいですか?
-
[解決済み] CSS - カーソルを置いたときに塗りつぶしの色を変更する - SVG PATH
-
[解決済み] jQueryでページを更新するにはどうすればよいですか?
-
[解決済み] jQueryで複数のクラスを持つ要素を選択するにはどうすればよいですか?
-
[解決済み] How can I set the default value for an HTML <select> element?
-
[解決済み] jQueryで名前を指定して要素を選択するには?
-
[解決済み] jQueryを使用してハイパーリンクのhref属性を変更する方法
-
[解決済み] inline/inline-block要素間のスペースを削除するにはどうすればよいですか?
-
[解決済み] クリック可能なラベルを持つチェックボックスを作成するには?
-
[解決済み] jQuery 複数のイベントで同じ関数を起動する
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
ローカルリソースのロードが許可されていない問題を解決する
-
[解決済み] slackのチームIDやチャンネルIDを調べる最も簡単な方法は何ですか?
-
[解決済み] divブロック内のテキストを(水平方向と垂直方向に)センタリングするにはどうすればよいですか?
-
[解決済み] input type="file "ボタンのスタイリング
-
[解決済み] ラジオボタンをデフォルトで選択するには?[重複しています]
-
[解決済み] IMGとCSSのbackground-imageはいつ使い分ける?
-
[解決済み] CSSでdivを縦にスクロールできるようにする
-
[解決済み] HTMLのdiv要素とspan要素の違いは何ですか?
-
[解決済み] 残りの幅を埋めるためにdivを展開する
-
[解決済み] div内の画像の下に余分なスペースがある