Eu sei que isso é antigo, mas a pergunta era um pouco ambígua, pois alternar pode significar que cada caixa de seleção alterne seu estado, seja lá o que for. Se você tiver 3 marcados e 2 desmarcados, a alternância tornará os 3 primeiros desmarcados e os 2 últimos marcados.
Para isso, nenhuma das soluções aqui funciona, pois todas as caixas de seleção têm o mesmo estado, em vez de alternar o estado de cada caixa de seleção. Fazer $(':checkbox').prop('checked')
muitas caixas de seleção retorna o AND lógico entre todas .checked
as propriedades binárias, ou seja, se uma delas estiver desmarcada, o valor retornado é false
.
Você precisa usar .each()
se realmente deseja alternar cada estado da caixa de seleção em vez de torná-los todos iguais, por exemplo
$(':checkbox').each(function () { this.checked = !this.checked; });
Observe que você não precisa $(this)
dentro do manipulador, pois a .checked
propriedade existe em todos os navegadores.