280 votes

Comment déclencher un clic sur un lien en utilisant jQuery

J'ai un lien:

 <ul id="titleee" class="gallery">
  <li>
    <a href="#inline" rel="prettyPhoto">Talent</a>
  </li>
</ul>
 

et j'essaie de le déclencher en utilisant:

 $(document).ready(function() {
  $('#titleee').find('a').trigger('click');
});
 

Mais ça ne marche pas.

J'ai aussi essayé: $('#titleee a').trigger('click');

Modifier :

En fait, j'ai besoin de déclencher tout ce qui est appelé ici <a href="#inline" rel="prettyPhoto">

353voto

Kit Sunde Points 4026

Si vous essayez de déclencher un événement sur l'ancre, puis le code que vous aurez de travail j'ai recréé votre exemple, jsfiddle avec un gestionnaire de sorte que vous pouvez voir que cela fonctionne:

$(document).on("click", "a", function(){
    $(this).text("It works!");
});

$(document).ready(function(){
    $("a").trigger("click");
});

Êtes-vous essayer de causer à l'utilisateur de naviguer jusqu'à un certain point sur la page web en cliquant sur l'ancrage, ou êtes-vous essayer de déclencher des événements liés à elle? Peut-être que vous n'avez pas réellement liée à l'événement click avec succès à l'événement?

Aussi ceci:

$('#titleee').find('a').trigger('click');

est l'équivalent de ceci:

$('#titleee a').trigger('click');

Pas besoin d'appeler le trouver. :)

249voto

Graham Hotchkiss Points 261

Désolé, mais le gestionnaire d'événement n'est pas vraiment nécessaire. Ce que vous avez besoin est un autre élément à l'intérieur de la balise, cliquez sur.

<a id="test1" href="javascript:alert('test1')">TEST1</a>
<a id="test2" href="javascript:alert('test2')"><span>TEST2</span></a>

Jquery:

$('#test1').trigger('click'); // Nothing
$('#test2').find('span').trigger('click'); // Works
$('#test2 span').trigger('click'); // Also Works

Ce est tout au sujet de ce que vous cliquant et il n'est pas le tag, mais la chose. Malheureusement, nue texte ne semble pas être reconnu par JQuery, mais c'est de la vanille javascript:

document.getElementById('test1').click(); // Works!

Ou en accédant à l'objet jQuery comme un tableau

$('#test1')[0].click(); // Works too!!!

6voto

Julz Points 58

Avec le code que vous avez fourni, vous ne pouvez vous attendre à rien. Je seconde @mashappslabs: ajoutez d’abord un gestionnaire d’événements:

 $("selector").click(function() {
    console.log("element was clicked"); // or alert("click");
});
 

puis déclenchez votre événement:

 $("selector").click(); //or
$("selector").trigger("click");
 

et vous devriez voir le message dans votre console.

3voto

forthehackofit Points 681

Vous devez d'abord configurer l'événement click pour pouvoir le déclencher et voir ce qui se passe:

 //good habits first let's cache our selector
var $myLink = $('#titleee').find('a');
$myLink.click(function (evt) {
  evt.preventDefault();
  alert($(this).attr('href'));
});

// now the manual trigger
$myLink.trigger('click');
 

2voto

Matthew Vines Points 14425

Cela ne répond pas exactement à votre question, mais vous obtiendrez le même résultat avec moins de maux de tête.

J'ai toujours mes méthodes d'appels d'événements de clic qui contiennent toute la logique que j'aimerais exécuter. Pour que je puisse simplement appeler la méthode directement si je veux effectuer l'action sans un clic réel.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X