2011-08-12 31 views
18

我想定位所有具有以“部分”开头的ID的div;对于每个div,我想显示以“pre”开头的类型输入的子div。jquery选择器:ID开头的东西(关键字“部分”)

//groups = $('div [id^=section]'); 
    groups = $('[id^=section]');  

    $.each(groups, function(key, group) { 
     alert(key + ': ' + group); 
     //inputs = group.('[id^=pre]'); 
    }); 


<div id="section-A1">  
    <input id="preBeginDtl" name="BeginDtlFields" value="" type="hidden"> 
    <input id="other" name="name2" value="" type="input"> 
    <input id="preGroup" name="GRP" value="AA" type="hidden"> 
</div> 
+1

确定,所以做到这一点。有什么问题? –

回答

12

而不是寻找一个部分ID,也许你应该添加类“节”和“前”到的div?然后你可以搜索

groups = $('div.section div.pre'); 

你在做什么基本上是一个基于类的查找,这将是适当的机制。

+2

+1:该死的。 –

12
groups = $('[id^=section]');  

$.each(groups, function(key, group) { 
    inputs = $(group).children('[id^=pre]'); 
}); 
41

这会工作的选择:

$('[id^=section] > [id^=pre]') 

但是,我不认为你可以改变类型属性为输入元素。您可能只想将'pre'输入设置为type =“text”(而不是type =“hidden”),并将它们的css显示属性设置为none。然后使用jQuery show()来取消隐藏它。

<div id="section-A1">  
    <input id="preBeginDtl" name="BeginDtlFields" value="" type="text" style="display:none"> 
    <input id="other" name="name2" value="" type="text"> 
    <input id="preGroup" name="GRP" value="AA" type="text" style="display:none"> 
</div> 

$('[id^=section] > [id^=pre]').show()