jQuery differenza tra modifica e clic evento della casella di controllo

Come suggerisce il titolo, voglio sapere la differenza tra l’evento change e click di checkbox (in jQuery)

Ho letto la risposta a questo. Qual è la differenza tra .click e .change su una casella di controllo

Ma non funziona per me. change incendi anche quando colpisco gli spazi senza perdere la messa a fuoco.

Ecco una demo di violino

Entrambi sembrano funzionare allo stesso modo. Mi sto perdendo qualcosa qui?

Secondo il W3C, l’evento onclick viene triggersto dalla tastiera per motivi di accessibilità:

SCR35: Rendere accessibile la tastiera delle azioni utilizzando l’evento onclick di ancore e pulsanti

Per offrire un’esperienza utente migliore a chi non utilizza un mouse, i browser sono stati sviluppati per onclick evento onclick anche se il clic si verifica con una tastiera.

Per questo motivo, l’evento click di jQuery verrà triggersto anche se si fa clic sulla casella di controllo utilizzando la barra spaziatrice della tastiera. change , ovviamente, sparerà ogni volta che lo stato della casella di controllo cambia.

La casella di controllo sembra essere il caso speciale in cui la change e il click sono intercambiabili, poiché non è ansible triggersre l’evento di change senza triggersre anche il click .

Ovviamente, l’eccezione a questa regola è se si dovesse utilizzare javascript per modificare manualmente la casella di controllo, ad esempio:

 /* this would check the checkbox without firing either 'change' or 'click' */ $('#someCheckbox').prop('checked',true); /* this would fire 'change', but not 'click'. Note, however, that this does not change the checkbox, as 'change()' is only the function that is fired when the checkbox changes, it is not the function that does the changing */ $('#someCheckbox').trigger('change'); /* this would fire 'click', which by default automatically triggers 'change' */ $('#someCheckbox').trigger('click'); 

Ecco una dimostrazione di queste diverse azioni: http://jsfiddle.net/jackwanders/MPTxk/1/

Spero che questo ti aiuti.

La differenza principale: quando fai clic / colpisci lo spazio su una casella di controllo focalizzata, l’evento click triggersto, senza modifiche. A questo punto è ancora ansible impedire l’azione predefinita (con event.preventDefault() ) che dovrebbe essere quella di commutare lo stato checked di quella casella di spunta e triggersre l’evento change (che non ha un’azione predefinita).

In alcuni browser l’evento di modifica si triggers solo dopo la prima blur dopo il click .

Direi che il cambiamento si triggers quando la casella di controllo cambia (anche se non si fa clic su di esso). Ad esempio, se si modifica lo stato della casella di controllo tramite un’altra funzione.

è ansible selezionare o deselezionare la casella di controllo senza fare clic, utilizzando la tastiera (scheda e barre spaziatrici) questo va a cambiare la dichiarazione, ma non a fare clic. A parer mio

Per favore fatemi sapere se questo non aiuta rimuoverò il mio post:

Change : http://api.jquery.com/change/ – Penso che l’evento di cambiamento venga triggersto quando lo state dell’elemento, se modificato, non viene cliccato ma modificato. La casella di controllo ha lo stato selezionato e deselezionato.

Click clic: l’evento click è quando si fa clic sull’elemento non importa quale sarà lo stato della casella di controllo.

come in pseudo codice

 if checkbox state is checked alert(Hulk is awesome); if checkbox is click every time alert(Ironman is alright); 

La differenza che ho vissuto è questa:

 var $check = $(':checkbox'); $checkbox.checked = true; $checkbox.click( function() { alert(this.checked); // true }).change( function() { alert(this.checked); // false }); 

Quindi, con il clic lo stato non è ancora cambiato, con il cambiamento ha …

Cambia evento si triggers quando lo stato della casella di controllo è stato modificato tramite qualsiasi evento che si verificherà sia premendo spazio quando la casella di controllo era focalizzata O evento di triggerszione innescato O fatto clic su evento Dove come clic è stato triggersto solo quando abbiamo fatto clic sulla casella di controllo tramite clic del mouse ma a quella volta prima di fare clic se è stato specificato l’evento change, viene eseguito anche e quindi viene eseguito l’evento click.

Qui puoi vedere che è stato fatto un chiaro script sui contenitori: http://codebins.com/codes/home/4ldqpbu