Sé que esto es antiguo, pero la pregunta era un poco ambigua, ya que alternar puede significar que cada casilla de verificación debe alternar su estado, sea lo que sea. Si tiene 3 marcadas y 2 sin marcar, entonces alternar hará que las 3 primeras estén sin marcar y las 2 últimas marcadas.
Para eso, ninguna de las soluciones aquí funciona, ya que hacen que todas las casillas de verificación tengan el mismo estado, en lugar de alternar el estado de cada casilla de verificación. Hacer $(':checkbox').prop('checked')
en muchas casillas de verificación devuelve el AND lógico entre todas .checked
las propiedades binarias, es decir, si una de ellas no está marcada, el valor devuelto es false
.
Debe usarlo .each()
si desea alternar cada estado de casilla de verificación en lugar de hacer que todos sean iguales, por ejemplo
$(':checkbox').each(function () { this.checked = !this.checked; });
Tenga en cuenta que no necesita $(this)
dentro del controlador ya que la .checked
propiedad existe en todos los navegadores.