Tengo el siguiente código en una página html
jQuery("input[name="newstate"]").change(function(){
if(jQuery(this).attr("checked")) {
jQuery("input[name="new-state-name"]").show();
} else {
jQuery("input[name="new-state-name"]").hide();
}
});
Pero la pelusa jquery da el siguiente mensaje.
Solo debe usar el mismo selector más de una vez cuando sepa que la colección devuelta será diferente. Por ejemplo, si ha agregado más elementos a la página que pueden cumplir con el selector
¿Cómo modifico mi código para eliminar este mensaje?
Respuestas
3 para la respuesta № 1los .toggle()
método acepta un booleano para showOrHide
:
jQuery("input[name="newstate"]").change(function(){
// You can use this.checked instead of jQuery(this).attr("checked");
jQuery("input[name="new-state-name"]").toggle(this.checked);
});
De esta manera usted "ll saber que el new-state-name
estado de visualización de la entrada siempre coincide con el newstate
entrada (es decir, se mostrará cuando esté marcada, sin tener en cuenta su estado anterior). Lo que quiero decir es que, utilizando toggle()
sin showOrHide
puedes arriesgarte a que el newstate
estado y new-state-name
el estado de la pantalla se desincroniza si, por ejemplo, la new-state-name
El estado de visualización de la entrada se manipula desde fuera del newstate
change()
entrenador de animales.
Por supuesto, también puede asignar el conjunto de resultados a una variable temporal para realizar el selector una sola vez:
jQuery("input[name="newstate"]").change(function(){
var newStateInput = jQuery("input[name="new-state-name"]");
if(this.checked) {
newStateInput.show();
// ... more here
} else {
newStateInput.hide();
// ... and/or here
}
});
Si pretendes hacer más que mostrar / esconder.
EDITAR
Vaya, desafortunado error tipográfico. show()
debiera ser toggle()
en primera solucion
1 para la respuesta № 2
jQuery("input[name="newstate"]").change(function(){
jQuery("input[name="new-state-name"]").toggle();
});