2009-05-24 14 views
62

jQueryで同じIDを持つ<div>をすべて選択しようとしています。どうすればいいのですか?jQueryで特定のIDを持つすべての要素を選択する方法は?

私はこれを試してみましたが、それが

jQuery('#xx').each(function(ind,obj){ 
     //do stuff; 
}); 
+17

IDは一意であることを意味します。クラスを使用する。 –

+22

誰もが知っている、誰もここで彼の質問に答えた。 – Sid

+3

必ずしも一意のIDを持つことはできませんが、少なくとも私はそれを常に余裕がありません。さて、@mydoghaswormsさんは、質問には非常にうまく答えています[1]。 [1]:http://stackoverflow.com/questions/902839/jquery-select-divs-with-same-id#answer-6744674 – Fr0zenFyr

答えて

36

異なるIDを使用しますが、各DIVに同じクラスを割り当てます。

<div id="c-1" class="countdown"></div> 
<div id="c-2" class="countdown"></div> 

これもjQueryののリターン(「カウントダウン」)のオフに基づいてIDを再構築することができるという付加的な利点を有している。長さ


[OK]を何それぞれに複数のクラスを追加する方法についてカウントダウンタイマー。 IE:

<div class="countdown c-1"></div> 
<div class="countdown c-2"></div> 
<div class="countdown c-1"></div> 

こうして、あなたは両方の世界のベストを得ます。それは繰り返しのIDSを許可する

+0

バラサシアン:私はids1.nでn個のカウンタを持っているので、それぞれid = c-1、id = c-2などがありますが、これらの繰り返しはいくつかあります。だから私はあなたの方法を使用することはできません。彼らはすべて同じクラス= 'カウントダウン'を持っています ありがとう – mark

+0

なぜあなたはそれを繰り返したいですか?特にユニークなIDが必要です。 – Ballsacian1

+0

バラシアン:ありがとう!それは華麗でした!私が望む方法のように動作します!なぜ私はそれを前に考えなかったのか分からない! – mark

36

あなたの文書が同じIDを持つ2つのdiv要素を含めることはできません動作しませんでした。これはinvalid HTMLであり、その結果、基盤となるDOM APIはサポートしていません。 HTML standardから

ID =名[CS]この属性は、要素に 名前を割り当てます。この名前は である必要があります。

各divに異なるIDを割り当てて、両方とも$('#id1, #id2)を使用して選択することができます。または、両方の要素(たとえば.cls)に同じクラスを割り当て、両方を選択するには$('.cls')を使用します。

+1

また、基礎となるgetElementById()関数のほとんどがjQuery他のライブラリは、実際の検索拒否をして、与えられたIDと一致する最初の(またはランダムな)要素以外のものを返すよう呼び出すことになり、それをサポートすることは手動でDOMを歩くことを意味します。無効なマークアップの価値がありません! – ironfroggy

+0

この投稿について: 興味深いことに、javascript関数getElementsByName(xxx)があります - 複数のことに気付く - 同じ名前の要素を複数持つことは完全に合理的であることを暗示します... – Jimbo

+1

@Jimbo - Trueしかし私の答え'name'ではなく、同じ' id'を持つ要素についてです。 –

2

個別のタイマーごとに固有のCSSクラスを割り当てることはできますか。そうすれば、複数のdiv要素でうまくいくCSSクラスのセレクタを使うことができます。

+0

ポール 私はクラスを使用してすべてのタイマーを選択し、カウントダウンタイマーを初期化してスタイルを設定するため、私は各タイマーに固有のクラスを使用できません。 – mark

+1

** HTML **クラス。人々は、CSSセレクタをマッチさせるために、ほぼ独占的にクラスを使用しますが、それらを異なる言語の一部にしません。 – Quentin

1

また、2つのdivのユニークなIDで2つのdivをラップすることもできます。そして、ここで$("#div1","#wraper1")$("#div1","#wraper2")

でのdivを選択するあなたが行く:

<div id="wraper1"> 
<div id="div1"> 
</div> 
<div id="wraper2"> 
<div id="div1"> 
</div> 
371

ビューの学術的観点から(このようなクラスを使用するなど)、ここで他の正解は、ありますが、持っていてもよいことは勿論です同じIDを持つ複数のdivがあり、jQueryでそれらを選択することができます。あなたは

jQuery("#elemid") 

を使用する場合

それは与えられたIDを持つ唯一の最初の要素を選択します。もちろんこれは、任意の属性に選択のために働く

jQuery("[id=elemid]") 

、あなたは可能性:あなたは属性(あなたのケースでは例えばID)で選択したときに

しかし、それはのようなので、一致するすべての要素を返します。問題のタグを指定することで選択範囲をさらに絞り込むことができます(例:あなたのケースでDIV

jQuery("div[id=elemid]") 
+119

質問に答えたのは唯一の人でした。 – wcm

+15

これは正しい答えです。 – d512

+6

少なくとも誰かがjQueryで本当のことをする方法を知っています...ありがとう!私はこれを知りたいと思っていました。私は単に他の人がクラスを使うというアプローチをとることはできません。すでに別の仕事をしています。雹@mydoghasworms! – Fr0zenFyr

2

同じ名前を持つすべてのコントロールを返しますが、あなたはテキストが存在しないことを確認する必要があります最初のidで

$('div[id^="c-"]') 
4

$("div[id^=" + controlid + "]")をdiv要素を選択するためにこれを試してみてくださいいずれかのコントロールで

関連する問題