2011-08-12 62 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()