2010-06-27 22 views

Respuesta

19
$(function(){ 
    $('#thediv input:checkbox').attr('checked', 'checked'); 
}); 
2

Lo redquare tiene va a funcionar, pero es una idea general de usar true/false con ellos ya que es la forma en que están normalizados, aquí hay algunos ejemplos de por qué esto es un hábito muy útil para seguir. Por ejemplo:

$('#myDiv :checkbox').attr('checked', 'checked'); 
alert($('#myDiv :checkbox').attr('checked')); //this alerts true, not "checked" 

You can test this here

En cambio, tener el hábito de pasar un valor lógico, que es mucho más versátil, por ejemplo:

$(function() { 
    $('#myDiv :checkbox').attr('checked', true); 
}); 

Esto permite mucha más flexibilidad en Por ejemplo, un código más breve, por ejemplo, dice que teníamos una casilla de verificación "Comprobar todo" en la parte superior, ¿cómo se vería eso?

$('#checkAll').change(function() { 
    if(this.checked) { 
    $('#subTable :checkbox').attr('checked', 'checked'); 
    } else { 
    $('#subTable :checkbox').removeAttr('checked', 'checked'); 
    } 
}); 

Ahora hemos tenido que traer una nueva función para hacer el trabajo, .removeAttr(). Para ser justos, this is even how the jQuery documentation does it in the example. Sin embargo, se puede cortar que en gran manera si se toma ventaja de la normalización jQuery hace internamente, así:

$('#checkAll').change(function() { 
    $('#subTable :checkbox').attr('checked', this.checked); 
}); 

Esto es algo a tener en cuenta al código, las mismas reglas Appy a .attr('disabled') . Hay otras áreas donde también ocurre la normalización ... probablemente los eventos sean los más extensos, si tiene curiosidad you can see that here, ya está hecho para usted, úselo :)

+0

Sé que soy un disco rayado en esto, pero en realidad, la propiedad 'checked' del elemento de casilla de verificación es, con mucho, lo más fácil y natural de usar. Lo mismo ocurre con 'disabled '. –

+0

@Tim - Y qué es lo que se está usando :) Sin embargo * configuración * la propiedad en ** elementos ** múltiples no se hace fácilmente de una manera concisa, tendrías que hacer una llamada '.each()' manual en todo tu código para eso. Puedes hacer '.checked = true;' en una * colección * :) –

+0

Lo sé, lo sé. Lo hice en mi respuesta. Todavía recomiendo usar las propiedades 'each()' y 'checked ': existe una confusión innecesaria en las mentes de muchos desarrolladores sobre algo extremadamente simple gracias a la función' attr() ', desafortunadamente llamada (que usualmente propiedades, no atributos) y las múltiples formas inciertas y tortuosas que la gente ahora recomienda para establecer una bandera booleana simple que existió y funcionó felizmente durante una década y media. –

11

La gente parece realmente confundida acerca de cómo hacerlo esto en jQuery. Verificar una casilla de verificación es mucho más fácil y más eficiente sin ella. Los siguientes usos puntos fuertes de la selección y la iteración en una lista de nodos combinados con de jQuery el no podía-ser-más simple DOM checked propiedad de elementos de casillas de verificación:

$("#myDiv input:checkbox").each(function() { 
    this.checked = true; 
}); 

No es demasiado difícil de cortar jQuery en total en este caso :

var div = document.getElementById("myDiv"); 
var inputs = div.getElementsByTagName("input"); 
for (var i = 0, len = inputs.length; i < len; ++i) { 
    if (inputs[i].type == "checkbox") { 
     inputs[i].checked = true; 
    } 
} 

ACTUALIZACIÓN

Desde el lanzamiento de jQuery 1.6 y prop(), hay una manera sensata de hacer esto en jQuery:

$("#myDiv input:checkbox").prop("checked", true); 
+0

Sé que este es viejo, pero quizás puedas ayudarme. Tengo un formulario, donde me gusta preseleccionar todas las casillas de verificación en un div, pero después de enviar un formulario, debe mostrar los recuadros seleccionados (un usuario puede anular la selección de un recuadro y ahora todos los recuadros se vuelven a verificar), – alex

0

Esto es trabajo en firefox v.17.01. Aún no lo he probado en otros navegadores.

// Seleccionar casillas de verificación y comprobación de la carga

$('#enable, #enable1, #enable2, #enable3').attr('checked', 'checked'); 

Vea el ejemplo:

JS FIDDLE

Cuestiones relacionadas