Ne peut pas déclencher par programmation jQuery cliquez sur l'événement
Si je comprends bien, pour déclencher par programmation jQuery cliquez sur l'événement attaché à un objet avec une classe css de my-button
, vous devriez être en mesure de simplement faire ceci:
$('.my-button').click();
Pour une raison quelconque, ce code est de ne pas déclencher l'événement click rattachée à l'élément. Le $('.my-button')
partie du code de travail et le retour d'un élément. Nous savons que le gestionnaire d'événements est attaché à cet élément, car en cliquant sur l'élément ne déclencher son gestionnaire d'événement du code. Le gestionnaire est attaché avec le code simple suivant:
$('<a class="my-button"/>')
.click(function() { /* code here */ })
.appendTo(parent);
Y a des conditions où l'événement déclencheur ne fonctionne pas? L'élément en cours d'accès est créé grâce à un widget jQuery, le code du widget est extrait par l'intermédiaire d'un cross-domain JSONP appel et courir à travers eval
(le facteur que je soupçonne).
- Eh bien pour commencer, votre gestionnaire de rattachement code contient une erreur de syntaxe...
- Merci pour la faute de frappe, @Eric.
- Je me souviens en cours d'exécution dans une question comme celle sur jQuery 1.4.3
Vous devez vous connecter pour publier un commentaire.
Vous devez utiliser:
.trigger('click')
; qui n'a pas de travail. Ils font la même chose, de toute façon.Ce qui s'est avéré être un cas de deux scripts jQuery en cours de chargement. Le script récupéré via JSONP inclus le chargement de jQuery, et que l'objet jQuery est utilisé pour fixer le gestionnaire d'événement. Pendant ce temps, dans mon co-travailleur de la page web, il avait chargé sa propre jQuery. Par conséquent, cette deuxième objet jQuery, n'ayant aucune connaissance de la première de gestionnaires d'événements, a été incapable de programmation pour invoquer le gestionnaire.
Je ne sais pas si la croix-domaine JSONP a quelque chose à faire avec elle, mais je dois dire que par programmation le déclenchement d'un événement de clic sur un sélecteur qui a à voir avec un lien html (
<a href='...'>...</a>
) ne fonctionne pas.Je la soupçonne d'être une sorte de navigateur de stratégie, de manière à bloquer les pop ups. Considérez le fait que les navigateurs, un mécanisme de suivi et de bloquer les pop-ups et surtout permettre à l'utilisateur d'autoriser un clic avant que le nouveau lien apparaît.
Si vous pouviez par programme, cliquez sur un lien via jQuery, la redirection, les popups et tout ça serait plus facile à faire, donc il n'est pas possible. Juste pour être clair:
<a class='test' href='http://www.example.com'>Link1<a/>
vous ne pouvez pas déclencher que.<a class='test2'>Link2</a>
, vous pouvez déclencher un onclick ici, parce qu'il ne contient pas de href.J'ai eu le même problème et changer la façon dont j'ai lié l'événement à la fonction, il fixe
alors changé la liaison selon l'exemple de la http://api.jquery.com/trigger/
Bizarre. Avez-vous essayé
.trigger('click')
? Théoriquement, ils devraient être les mêmes (à la recherche en jQuery code dès maintenant pour découvrir). Edit: Il semble .cliquez sur() est simplement un proxy pour .trigger('click'), de sorte qu'il ne sera probablement pas aider.Pour le débogage, essayez de lier un live cliquez sur l'événement sur la page que le widget est chargé de à la.
.trigger('click')
; qui n'a pas de travail..live('click', ...)
de l'événement sur la page que le widget est chargé dans, juste pour voir si c'est un problème avec le widget cours de chargement et eval avais.click
gestionnaire d'événement est travail à trouver. En cliquant sur le lien fonctionne. Par programmation de déclenchement il n'est pas.Ma meilleure supposition est le gestionnaire est tenu après que vous essayez de déclencher l'événement.
Essayer:
ou à l'aide de votre code d'origine - déclencher l'événement le rappel de votre requête JSONP.
click
cas d'un autrea
dans la page.Si elle ne se souvient de ces événements, en particulier la coutume, qui sont enregistrées correctement, il est probable que la bibliothèque jQuery est chargé à nouveau, après l'affectation d'un gestionnaire d'événement.
Vérifier votre code à l'aide de:
Revenir vers les dom et le faire avec:
$("abutton")[0].cliquez sur();