jQuery: trigger click () ne fonctionne pas?
Pourquoi en cliquant sur trigger1
et trigger2
n'est pas le feu, cliquez sur open
?
<a id="trigger1" href="#" onclick="jQuery('#open').trigger('click');">trigger1</a>
<a id="trigger2" href="#" onclick="jQuery('#open').click();">trigger2</a>
<a id="open" href="http://google.com">open</a>
À l'aide de prêt (trigger3
) ne fonctionne pas trop:
<a id="trigger3" href="#">trigger3</a>
...
jQuery(document).ready(function(){
jQuery('#trigger3').bind('click', function(){
jQuery('#open').html('to be fired'); /* works */
jQuery('#open').click();
});
jQuery('#trigger3').click(function(){
jQuery('#open').html('to be fired'); /* works */
jQuery('#open').click();
});
});
source d'informationauteur marioosh
Vous devez vous connecter pour publier un commentaire.
Il est important de préciser que cela
jQuery('#open').click()
n'exécute pas l'attribut href d'une balise d'ancrage de sorte que vous ne sera pas redirigé. Il exécute lesonclick
événement pour#open
qui n'est pas définie.Vous pouvez effectuer la redirection et la capacité de causer avec votre original
jQuery('#open').click()
code en donnant#open
un événement click:De ce que votre code ressemble, que vous voulez, quand un utilisateur clique sur le lien de l'une ou des deux (trigger 1 ou 2) vous voulez le lien dans
open
à suivre?Si c'est le cas,
.click()
n'est pas la fonction que vous voulez, en fait, jQuery ne semble pas offrir une méthode de le faire directement en cliquant sur un point d'ancrage de l'élément. Ce qu'il va faire est de déclencher un événement qui sont attachés à un élément.Prendre un coup d'oeil à cet exemple:
jQuery:
ici
Donc il y a un événement relié à l'élément avec l'ID
open
que simplement des alertes-à-dire qu'il a été cliqué. En cliquant sur le déclencheur lien simplement déclenche l'événement click sur l'élément avec l'IDopen
. Donc, il ne va pas faire ce que vous voulez! Il fera feu de tout les événements, mais il ne fait pas suivre le lienJ'ai enlevé le 2ème déclencheur car
.click()
est juste un proxy pour.trigger('click')
de sorte qu'ils font la même chose!Afin de déclencher une réelle cliquez sur un point d'ancrage, vous aurez à faire un peu plus de travail. Pour rendre cela un peu plus réutilisables, et j'aimerais changer votre code HTML, un peu de (je vais expain pourquoi dans un instant):
jQuery (la plus courte):
ici
OU:
ici
Fondamentalement tout lien que vous voulez suivre un autre élément à ajouter à la
class="trigger"
pour, de cette façon il est ré-utilisable. Dans l'élément que vous avez ajouté leclass
ajouter unce qui vous permettra de configurer de multiples clics sur les différents liens.
class="trigger"
href
adresse de l'élémentessayer avec la suppression de
onclick="jQuery('#open').click();"
Aussi essayer de mettre
$('#trigger1')
vous utilisezjQuery('#trigger3')
Sur JSFIDDLE ici.
vous êtes événement de liaison
click
à#trigger3
deux fois. supprimer l'un d'euxEssayez ceci:
jQuery('#open").html ("à flamme"); va changer à la juste un texte. C'est pourquoi le 2e sélectionnez ne fonctionne pas.
Il y a 3 types de liens en fonction de la
href
contenu :1) Le
href
est une url2) La
href
est un appel javascript comme "javascript:"3) La
href
est inutile ("#", "javascript:void(0)", ...), la fonction est directement lié sur le lienC'est pourquoi je fais ce petit plugin pour appeler la bonne méthode :
De l'appeler, il suffit d'utiliser
$('DOMelement').triggerClick()
.Espérons que cela pourrait les aider.
(Ce plugin est un prototype. Merci de me dire si il y a quelques erreurs...)