2009-03-18 24 views
1

私はjQueryの1.3.2を使用しています:jQueryの:複数の要素の選択

<script src="../../Scripts/jquery-1.3.2.js" type="text/javascript"></script> 

を私は次のHTML持っている:私はすべての「パッケージ - を選択しようとしている

<div id="container-div"> 
     <div id="package_1"> 
      <div>Package_1</div> 
      <div id="package-content"></div> 
     </div> 
     <div id="package_2"> 
      <div>Package_2</div> 
      <div id="package-content"></div> 
     </div> 
    </div> 

をjQueryセレクタを使用して "content"要素を追加します。私は、私は次の操作を行うことができると思ったが、期待どおりに動作していないです:

$('#package-content') 

これが唯一のリストの最初の要素戻っている - 私はgetElementByIdを(「パッケージコンテンツ」)に期待するものですが、私は思いましたjQueryはすべての要素の配列を返します。 div idのjQueryセレクタの理解に何が欠けていますか?

私は何が起こっていたかを把握するために、次のテストを書きましたが、それは、それは最初の要素だけを選択したことを証明するよりも、他の私の理解を助けていません。

alert($('#container-div').find('#package-content').size()); // = 2 
alert($('#package-content').size()); // = 1 
alert($('#package-content').parent().attr('id')); // = package_1 

$("#package-content").each(function() { 
    alert('parent: ' + $(this).parent().attr('id') + ' child: ' + $(this).attr('id')); = parent: package_1 child: package-content 
}); 

答えて

9

IDは、特定の要素を識別するためのユニークな値であると考えられます。あなたは同じものを持つ2つのdivを持つことはできません。あなたはと$('.package-content')代わりクラスを使用して試みることができます。

+0

をこれについてのjQueryドキュメント - http://docs.jquery.com/Selectors/id#id - 明らかに1つの#idだけが選択されています。 –

0

id属性は一意であることを意図しています。 package-contentclass属性を設定してみてくださいと.package-content代わりの#package-contentにあなたのセレクタを変更します。パッケージ・コンテンツクラス

2

メイクは、あなたはまだそれらのdivにIDを持つことができますが、クラスセレクタ使うIDのユニークな

<div id="container-div"> 
    <div id="package_1"> 
     <div>Package_1</div> 
     <div id="pc1" class="package-content"></div> 
    </div> 
    <div id="package_2"> 
     <div>Package_2</div> 
     <div id="pc2" class="package-content"></div> 
    </div> 
</div> 

を作るのがベストプラクティスです:私は読み違える

$(".package-content")