2012-01-16 10 views
3

ページ上に同じidを持つ複数のdom要素を持つことはできますか?それらの要素はさまざまな同一のjQuery UIダイアログにしか含まれていないのですか?たとえば:DOM IDとjQuery UIの重複ダイアログ

<div id="tabInfo" class="tabDiv"> 
     <ul> 
      <li><a href="#tabs-info">Book Info</a></li> 
      <li><a href="#tabs-reviews">Reviews</a></li> 
      <li><a href="#tabs-subjects">Related Subjects</a></li> 
      <li><a href="#tabs-alsoByAuthor">Also by Author</a></li> 
     </ul> 
     <div id="tabs-info"> 
     ... 

tabInfo divがダイアログにタブコントロールになって、そして挿入されています。しかし、一度に複数のダイアログを開くことができます。これらのダイアログはすべてこのコードから描画します。その結果、ID番号tabInfotabs-infotabs-reviewsなどのページに複数のdivがある可能性があります。

これはすべて正常に動作しているようです。私の質問は、この状況に対処するためにjQuery UIがコード化されているか、これを行うための良い方法がありますか?

+1

複数のIDは有効なHTMLではありません。有効でないHTMLを使用するユーザーは、敬意を表します。この問題を解決する最善の方法は、IDの代わりにクラスを使用することです。 – Raynos

+1

@Raynos - どのように不吉な:) –

+0

複数のIDがあるべきではありません。 DOMを使って作業するために(名前を使用する)、CSSの場合は(クラスを使用する) – ajax333221

答えて

3

いいえ、IDは100%ユニークである必要があります。つまり、IDの性質です。あなたは倍数は、その後、Idの代わりにクラスを使用するか、あなたのIDを生成する必要がある場合は、動的などのtabInfo_1tabInfo_2など

私はあなたのコードを壊す非ユニークなIDを持つことを知っているが、それは最初に質問することはずのいけない

標準的にはユニークである必要があるためです。

http://www.w3.org/TR/html4/struct/global.html#adef-id

+2

+1 true; jQueryは気にしません。それは最初に見えるものをつかむだけです。 –

+0

それは本当に十分ですJeremy、しかしIDはまだ動的IDを擁護しています:-)抜け穴を悪用する必要はありません: – prodigitalson

+0

@JeremyHolovacs DOMは気にもならず、idで見つけた最初の要素をつかむだけです。それでも決してこれを行うべきではない – Raynos

1

私は、あなたはおそらく知っている様々な理由のために、それをお勧めしませんが、jQueryのは、複数の値を返すIDセレクタを処理することができます。おそらくうまくいくはずですが、後でこの機能をサポートしていないjQueryのバージョンに更新する場合は、SOLになります。

標準の理由から、標準の不完全な実装で作業しているので、別の方法を見つけることをお勧めします。

+0

できません。 'jQuery("#id ")。length === 1'です。同じIDで複数の要素が見つかりません。 – Raynos