Se você estiver usando uma versão relativamente nova do JQuery, usaria o .on ('change', function () {...}) conforme mencionado na resposta de @Daniel De Leon abaixo. Uma vantagem: o ouvinte de evento "on" será vinculado ao html gerado dinamicamente.
Editar: isso não será capturado quando a caixa de seleção for alterada por outros motivos que não um clique, como usar o teclado. Para evitar esse problema, ouça em changevez de click.
document.getElementById ('something') .check funciona, por que $ ('# something') .check não funciona?
OMG
Seu código está faltando um paran e realmente deve usar a maneira jQuery de obter o estado de verificação.
Pete Michaud
2
Shore: a razão pela qual getElementById funciona é que ele retorna um elemento DOM, enquanto a função $ jQuery retorna um objeto jQuery. O objeto jQuery possui o elemento DOM como uma propriedade, mas não é, por si só, um objeto DOM.
Pete Michaud
3
Sei que estou chegando atrasado à festa, mas isso só funciona quando um evento de "clique" aciona isso. Se, por algum motivo, você fizesse algo assim em outro lugar no código: $ ("# something"). Attr ("selected", "selected"), o evento click nunca seria acionado.
David Stinemetze
3
@DavidStinemetze: Eu diria que você pode ouvir muito em changevez de clicar. Estou atualizando a resposta
marcgg 12/01
44
O clique afetará um rótulo se houver um anexado à caixa de seleção de entrada?
Preciso saber se um clique significa para marcar ou desmarcar.
Omg
1
você pode usar $ (this) .is (': selected') para testar o estado do item que acabou de ser clicado
Ty W
-1
$(document).ready(function(){
checkUncheckAll("#select_all","[name='check_boxes[]']");});var NUM_BOXES =10;// last checkbox the user clickedvarlast=-1;function check(event){// in IE, the event object is a property of the window object// in Mozilla, event object is passed to event handlers as a parameterevent=event|| window.event;var num = parseInt(/box\[(\d+)\]/.exec(this.name)[1]);if(event.shiftKey &&last!=-1){var di = num >last?1:-1;for(var i =last; i != num; i += di)
document.forms.boxes['box['+ i +']'].checked=true;}last= num;}function init(){for(var i =0; i < NUM_BOXES; i++)
document.forms.boxes['box['+ i +']'].onclick = check;}
Parece uma seleção de intervalo (ou seja, verifique o primeiro item, mantenha pressionada a tecla Shift, verifique o último; e todos os itens marcados.) No entanto, isso é muito mais do que a pergunta solicita. Faltam alguns códigos, como checkUncheckAll ().
Respostas:
Editar: isso não será capturado quando a caixa de seleção for alterada por outros motivos que não um clique, como usar o teclado. Para evitar esse problema, ouça em
change
vez declick
.Para marcar / desmarcar programaticamente, dê uma olhada em Por que meu evento de alteração da caixa de seleção não é acionado?
fonte
change
vez de clicar. Estou atualizando a respostaO clique afetará um rótulo se houver um anexado à caixa de seleção de entrada?
Eu acho que é melhor usar a função .change ()
fonte
Use o seletor : selected para determinar o estado da caixa de seleção:
fonte
Para o JQuery 1.7+, use:
fonte
Use o snippet de código abaixo para conseguir isso:
Ou você pode fazer o mesmo com uma única caixa de seleção:
Para demonstração: http://jsfiddle.net/creativegala/hTtxe/
fonte
Na minha experiência, tive que aproveitar o currentTarget do evento:
fonte
Este código faz o que você precisa:
Além disso, você pode verificá-lo no jsfiddle
fonte
use o evento click para melhor compatibilidade com o MSIE
fonte
HTML:
fonte