8
votes

Impossible de déclencher de manière programmée JQuery Click Event

Si je comprends correctement, pour déclencher de manière programmable un événement de clic jQuery attaché à un objet avec une classe CSS de mon-bouton code>, vous devriez être capable de simplement faire ceci:

$('<a class="my-button"/>')
    .click(function() { /* code here */ })
    .appendTo(parent);


3 commentaires

Eh bien, pour un démarrage, votre code d'attachement du gestionnaire a une erreur de syntaxe ...


Merci d'avoir souligné la faute de frappe, @ scientifique.


Je me souviens de courir dans un problème comme celui-ci sur JQuery 1.4.3


9 Réponses :


1
votes

impair. Avez-vous essayé .trigger ('click') ? Théoriquement, ils devraient être les mêmes (regarder le code JQuery pour le découvrir). Edit: il apparaît .Cliquez sur .Cliquez sur () est simplement un proxy pour .trigger («click»), donc cela ne vous aidera probablement pas.

Pour débogage, essayez de lier un événement en direct sur la page que le widget est chargé dans.


4 commentaires

Essayez de lierer un .Live ('Cliquez sur', ...) Evénement sur la page que le widget est chargé pour, juste pour voir si son problème avec le widget est chargé et évalué .


Le gestionnaire d'événements cliquez sur Trouver Trouver. En cliquant sur le lien fonctionne. Déclencher par programmation ne le fait pas.


DOCS dit "Bien que .Trigger () simule une activation d'événement, avec un objet d'événement synthétisé, il ne reproduit pas parfaitement un événement naturel." essayant de comprendre ce que cela signifie exactement, mais peut-être sa relation.


Ouais, j'essaie d'appeler .trigger ("click") sur un img à l'intérieur d'un

  • , et je reçois une erreur: "TypeError: objet # n'a pas de méthode" déclencheur ".



  • 5
    votes

    Vous devez utiliser:

    $('.my-button').trigger("click");
    


    1 commentaires

    Nous avons essayé d'utiliser .trigger ("cliquer") ; cela n'a pas non plus fonctionné. Ils font la même chose, de toute façon.



    1
    votes

    Mon meilleur devin est que le gestionnaire est lié après avoir essayé de déclencher l'événement.

    Essayez: xxx

    ou à l'aide de votre code d'origine - déclencher l'événement dans le rappel de votre demande JSONP.


    2 commentaires

    J'ai eu la même pensée, mais le déclenchement programmatique se produit définitivement après que le gestionnaire ait été lié. Le déclenchement a lieu dans l'événement Cliquez sur d'un autre A dans la page.


    @Jacob: Est-ce qu'ils descendent les uns des autres?



    5
    votes

    Cela s'est avéré être un cas de deux scripts jQuery en cours de chargement. Le script récupéré via JSONP incluait le chargement de JQuery et que l'objet JQuery a été utilisé pour attacher le gestionnaire d'événements. Pendant ce temps, dans la page Web de ma collègue, il avait chargé sa propre jQuery. Par conséquent, ce second objet JQuery, n'ayant aucune connaissance des gestionnaires d'événements du premier, était incapable d'invoquer par programmation le gestionnaire.


    1 commentaires

    Oh mon Dieu! Je me luttais avec le même problème. Dans mon cas aussi, j'ai eu plusieurs instances de JQuery.



    2
    votes

    J'ai eu le même problème et que je changeai de la manière dont j'ai lié l'événement à la fonction fixe xxx

    a ensuite modifié la liaison selon l'exemple dans http://api.jquerery.com/trigger/ xxx


    0 commentaires

    3
    votes

    Je ne sais pas si Cross-Domain JSONP a quelque chose à voir avec cela, mais je dois dire que cela déclenche par programmation d'un événement de clic sur un sélecteur qui a trait à un lien HTML ( ... ) ne fonctionne pas.

    Je soupçonne qu'il doit s'agir d'une sorte de politique de navigateur, de manière à bloquer les pop-ups. Considérez le fait que les navigateurs, ont un mécanisme pour suivre et bloquer les pop-ups et permettent principalement à l'utilisateur autorisant une action de clic avant que le nouveau lien apparaisse.

    Si vous pouviez cliquer surmmatiquement un lien via jQuery, la redirection, les popups et tout ce genre de choses serait plus facile à faire. Il n'est donc pas possible. Juste pour être clair:

    link1 Vous ne pouvez pas déclencher cela.

    link2 Vous pouvez déclencher une onclick ici, car il ne contient pas href.


    1 commentaires

    Merci. C'était la solution qui m'a aidé. Je faisais le même processus, l'un déclenchant un appel Ajax qui a fonctionné et sur une autre page, je n'avais pas besoin de l'Ajax, et la configurez-le comme un lien régulier. Cela n'a pas fonctionné. Pour obtenir le mien pour travailler et recharger la page entière, je devais définir le document.Location égal à l'attribut href du lien.



    -1
    votes

    retourner sur le DOM et le faire avec:

    $ ("Abutton") [0] .Cliquez sur ();


    0 commentaires

    0
    votes

    S'il ne rappelle pas les événements, en particulier la coutume, qui sont correctement enregistrées, il est probable que la bibliothèque de jQuery est chargée à nouveau, après avoir affecté un gestionnaire d'événements.

    Vérifiez votre code à l'aide de: xxx


    0 commentaires

    0
    votes

    Je l'ai également rencontré mais je n'avais pas de jQuery multiple.

    lire à travers les réponses ici, j'ai réalisé que c'était à cause de l'ordre d'exécution. Je lie le gestionnaire d'événements quelques lignes après avoir eu la fonction qui a invoqué le clic.

    C'était un Doh! moment ...


    0 commentaires