jQuery:多元素选择

时间:2009-03-18 17:38:35

标签: jquery css-selectors

我正在使用jQuery 1.3.2:

<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选择器选择所有“package-content”元素。我以为我可以做到以下但是没有按预期工作:

$('#package-content')

这只返回列表中的第一个元素 - 这是我对getElementById(“package-content”)的期望,但我认为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
});

3 个答案:

答案 0 :(得分:9)

id 应该是标识特定元素的唯一值。你不能有两个同一个div。您可以尝试使用$('.package-content')代替。

答案 1 :(得分:2)

将package-content设为一个类,你仍然可以在这些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")

答案 2 :(得分:0)

id属性旨在是唯一的。尝试将class属性设置为package-content,然后将您的选择器更改为.package-content而不是#package-content