jQuery différence entre le changement et le clic événement de la case à cocher

comme le titre suggère que je veux savoir la différence entre le change et click événement de case à cocher (en jQuery)

j'ai lu la réponse à ce Quelle est la différence entre .cliquez et .changement dans la case

mais, ça ne marche pas pour moi. change tire même quand je touche des espaces sans perdre la concentration.

Voici une violon démo

les deux semblent fonctionner de la même façon. Suis-je manqué quelque chose ?

27
demandé sur Community 2012-06-26 15:04:29

7 réponses

selon le W3C, l'événement onclick est déclenché par le clavier pour des raisons d'accessibilité:

SCR35: Faire des actions accessibles au clavier en utilisant l'événement onclick d'ancres et des boutons

afin de fournir une meilleure expérience utilisateur pour ceux qui n'utilisent pas de souris, les navigateurs ont été développés pour lancer l'événement onclick même si le cliquez se produit avec un clavier.

pour cette raison, l'événement click de jQuery se déclenchera même si la case à cocher est cliqué en utilisant la barre d'espacement du clavier. change , évidemment, va tirer à chaque fois que l'état de la case à cocher change.

il se trouve que la case à cocher est le cas spécial où change et click sont interchangeables, parce que vous ne pouvez pas lancer l'événement change sans déclencher également click .

bien sûr, l'exception à cette règle est si vous deviez utiliser javascript pour modifier manuellement la case à cocher, comme:

/* 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');

voici une démonstration de ces différentes actions: http://jsfiddle.net/jackwanders/MPTxk/1/

Espérons que cette aide.

51
répondu jackwanders 2012-06-28 19:33:15

la différence principale: lorsque vous cliquez / appuyez sur espace sur une case à cocher focalisée d'abord l'événement click tiré, sans changement. À ce stade, vous pouvez toujours empêcher l'action par défaut (avec event.preventDefault() ) qui serait de basculer l'état checked de cette case à cocher, et de lancer l'événement change (qui n'a pas d'action par défaut).

Dans certains navigateurs, le changement événement se déclenche qu'après le premier blur après le click .

6
répondu pozs 2012-07-03 20:44:58

je suppose que changer les feux lorsque la case à cocher change (même si vous ne cliquez pas dessus). Par exemple, si vous changez l'état de la case à cocher via une autre fonction.

3
répondu PaperThick 2012-06-26 11:08:59

vous pouvez cocher ou décocher la case sans cliquer, en utilisant le clavier (tabulation et barres d'espace) cela va pour changer la déclaration mais pas pour cliquer. IMHO

0
répondu F0G 2012-06-26 11:09:53

s'il vous Plaît laissez-moi savoir si ce n'aide pas, je vais supprimer mon post:

Change : http://api.jquery.com/change / - je pense que l'événement de changement se déclenche lorsque le state de l'élément s'il est changé, c.-à-d. pas cliqué mais changé. Case à cocher a enregistrés et non de l'état.

Click : l'événement de clic est quand vous cliquez l'élément n'a pas d'importance ce que l'état de la case à cocher est va être.

comme en pseudo code

if checkbox state is checked

    alert(Hulk is awesome);

if checkbox is click every time

    alert(Ironman is alright);
0
répondu Tats_innit 2012-06-26 11:13:40

la différence que j'ai vécue est la suivante:

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

Donc, avec sur l'état n'a pas encore changé, avec le changement...

0
répondu Simon 2012-06-26 11:22:58

Changement événement se déclenche quand la case à cocher statut a été modifié par n'importe quel événement va avoir lieu soit par le biais d'appuyer sur la touche espace lorsque la case à cocher a été porté Ou Déclenché événement de changement Ou cliqué Où, comme Sur l'événement a été déclenché uniquement lorsque nous avons cliqué sur la case à cocher par clic de souris, mais à l'époque, avant de cliquer si le changement de l'événement a été spécifié, alors il s'exécute aussi, et puis l'exécuter cliquez sur l'événement.

ici vous pouvez voir le script clair a été fait sur les bacs: http://codebins.com/codes/home/4ldqpbu

0
répondu gaurang171 2012-07-03 13:24:51