通过jquery查找深层嵌套输入

时间:2011-09-05 11:05:40

标签: jquery html

    <div id="customerServices">
      <div id="pnlCustomerServices_Container">
        <!-- and many others divs...... -->
       <div id="s1_Container">
         <div id="ext-gen32">
           <!-- and many others divs........ -->
          <input type="checkbox" id="s1" 
               name="s1" class=" x-form-checkbox and_many_classes.....  parent" value="s1">
             <label for="s1" class="x-form-cb-label font-bold" 
                 id="ext-gen33">Label1Text</label>
           <!-- and many others divs........ --->
           </div>
         </div>

<div id="s2_Container">
         <div id="ext-gen33">
           <!-- and many others divs........ -->
          <input type="checkbox" id="s2" 
               name="s2" class=" x-form-checkbox and_many_classes.....  parent" value="s2">
             <label for="s2" class="x-form-cb-label font-bold" 
                 id="ext-gen34">Label1Text</label>
           <!-- and many others divs........ --->
           </div>
         </div>

       </div>
    </div>

我想找到所有input checkBox(在这种情况下为input checkBox id="s1"input checkBox id="s2"),其属性类包含“parent”并嵌套在 {{ 1}}。

但困难的是,div id="customerServices"customerServices之间有多少个div,以及输入的属性类有多少个值。

更新: 前段时间我使用的是以下代码。但它对当前任务无效。

input class = "parent"

UPDATE2: 还有一件事。如何找到没有属性$('#customerServices input:checkbox[class="parent"]');

的复选框
class=parent

3 个答案:

答案 0 :(得分:2)

出了什么问题:

$('.parent')

$('input .parent')

要更新:

$('#customerServices input:checkbox[class="parent"]');

选中class等于“parent”的复选框。但是您的class属性包含更多内容。你需要:

$('#customerServices input:checkbox.parent');

更新2:

$('#customerServices input:checkbox:not(.parent)');

答案 1 :(得分:2)

您应该可以使用

选择所需的元素
$("input:checkbox.parent")

参与<div id="customerServices">没有明显的理由,但如果你想减少DOM遍历,你可以使用更严格的

$("#customerServices input:checkbox.parent")

最后,您之前的

解决方案
$('#customerServices input:checkbox[class="parent"]')

不起作用,因为它只选择具有parent类的元素,而不选择那些具有其他类的元素。因为有这个确切的要求是非常不寻常的(我从来没有在野外看到它),恕我直言这样的选择器应该被认为是一个错误(即使它在编写时有效)。

答案 2 :(得分:2)

您的代码:

$('#customerServices input:checkbox[class="parent"]'); 

不起作用,因为您使用的是“attribute equals”选择器,该选择器将匹配class属性的整个值(并且由于您列出了多个类名,因此它会显示匹配整个字符串)。

但是,class selector.将匹配单个类名。因此,您可以使用类选择器而不是属性选择器,它应该可以工作:

$('#customerServices input:checkbox.parent');