2010-07-10 14 views
109

Necesito cambiar algunas entradas de casilla de verificación a entradas ocultas para algunas, pero no todas las entradas en una página.entrada de destino por tipo y nombre (selector)

<input type="checkbox" name="ProductCode"value="396P4"> 
<input type="checkbox" name="ProductCode"value="401P4"> 
<input type="checkbox" name="ProductCode"value="F460129"> 

El código jQuery a continuación sólo se selecciona la entrada por el tipo que hace que todas las casillas de verificación para cambiar a las entradas ocultas ¿Hay una manera de comprobar para ambos tipo de entrada = "casilla de verificación" y el nombre = "ProductCode" como el selector para que pueda orientar específicamente a aquellos que quiero cambiar?

$("input[type='checkbox']").each(function(){ 
var name = $(this).attr('name'); // grab name of original 
var value = $(this).attr('value'); // grab value of original 
var html = '<input type="hidden" name="'+name+'" value="'+value+'" />'; 
$(this).after(html).remove(); // add new, then remove original input 
}); 

Respuesta

227

¿Quieres una multiple attribute selector

$("input[type='checkbox'][name='ProductCode']").each(function(){ ... 

o

$("input:checkbox[name='ProductCode']").each(function(){ ... 

Sería mejor utilizar una clase CSS para identificar aquellos que desea seleccionar, sin embargo, muchos navegadores modernos implementan el método document.getElementsByClassName que se utilizará para seleccionar elementos y será mucho más rápido que seleccionar el atributo name

+0

Ambos funcionaron para mí pero utilicé el segundo método. THX, tengo otra pregunta, pero haré una nueva pregunta. – user357034

18

Puede combinar selectores de atributos de esta manera:

$("[attr1=val][attr2=val]")... 

de manera que un elemento tiene que satisfacer ambas condiciones. Por supuesto, puedes usar esto por más de dos. Además, no lo haga [type=checkbox]. jQuery tiene un selector para que, a saber :checkbox por lo que el resultado final es:

$("input:checkbox[name=ProductCode]")... 

selectores de atributos son lentos sin embargo por lo que el método recomendado es usar identificación y de clase selectores que sea posible. Se podría cambiar su margen de beneficio a:

<input type="checkbox" class="ProductCode" name="ProductCode"value="396P4"> 
<input type="checkbox" class="ProductCode" name="ProductCode"value="401P4"> 
<input type="checkbox" class="ProductCode" name="ProductCode"value="F460129"> 

que le permite utilizar el selector mucho más rápido de:

$("input.ProductCode")... 
+0

Obviamente, esto también funciona, pero solo puedo dar crédito a una persona por la respuesta correcta. :) Una cosa que se piensa es que no puedo apuntar por clase porque no tengo acceso al marcado a menos que agregue una clase y en qué punto podría hacerlo. Pero Thx !!! – user357034

4
input[type='checkbox', name='ProductCode'] 

Esa es la manera de CSS y estoy casi seguro de que funcionará en jQuery.

Cuestiones relacionadas