2011-08-12 20 views
18

Quiero apuntar a todos los divs que tienen una identificación que comienza con "sección"; Para cada uno de estos divs, quiero mostrar los divs secundarios de tipo input que comienzan con "pre".jquery selector: ID comienza con algo (palabra clave "sección")

//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

OK, así que hacerlo. ¿Cuál es el problema? –

Respuesta

12

En lugar de buscar un ID parcial, tal vez debería agregar clases "sección" y "pre" a los divs? A continuación, puede buscar en

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

Lo que está haciendo es esencialmente una búsqueda basada en la clase, y que sería el mecanismo apropiado.

+2

+1: Maldita sea cierto. –

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

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

Esto funcionaría como selector:

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

Pero, no creo que se puede cambiar el atributo de tipo de elementos de entrada. Probablemente solo quiera establecer las entradas 'pre' como type = "text" (en lugar de type = "hidden"), y establecer su propiedad css display en none. Luego use el jQuery show() para mostrarlo.

<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> 

y

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