2010-12-13 87 views
3

Un peu difficile à expliquer, donc j'ai mis en place un jsFiddle here.jQuery/javascript différents comportements avec l'utilisateur cliquez et cochez une case par programme

Fondamentalement, j'ai un certain comportement déclenché quand un utilisateur clique sur une case à cocher. Dans un autre endroit, j'essaie de cliquer sur la case à cocher par programmation et j'ai besoin de voir exactement le même comportement. Cela ne fonctionne pas, apparemment quelque chose à voir avec l'ordre du clic et la détermination de l'attribut vérifié.

Comment puis-je obtenir le comportement que je recherche sans recourir à un hack?

Répondre

2

J'ai tendance à utiliser change gestionnaire ici à la place (puisque jQuery normalise le comportement, il ne nécessite pas de blur), puis le feu cet événement comme celui-ci:

$('span').click(function() { $('.test').click().change(); }); 

Ensuite, vous êtes explicite au sujet de la commandez ... et vous n'avez pas le problème de l'ordre d'action natif vs gestionnaire d'événement, you can test it out here.

+0

brillant! merci :) – fearofawhackplanet

1

Vous n'avez pas besoin de mettre le javascript pour ce comportement ... il suffit d'utiliser cette syntaxe html:

<input type="checkbox" id="myid" />&nbsp;<label for="myid">My Label</label> 

Si vous voulez ajouter javascript listners, vous pouvez ajouter le changement ou cliquez sur le champ de saisie.

:)

OU vous devriez le faire en utilisant jquery:

$('span').click(function() { $('.test').trigger('click'); }); 
+0

Cela fonctionne pour l'exemple, mais pas la question générale, qui était un clic programmatique de la case à cocher :) –

+0

cette ligne fait l'affaire $ ('span'). click (function() {$ ('. test') .trigger ('click');}); –

0

J'ai eu le même problème et qu'il fixe d'appeler la fonction javascript clic au lieu de jQuery un comme celui-ci:

$('.test')[0].click();