Jquery comment déclencher un événement click sur un élément href

J’essaie de déclencher un événement click sur hyperlien avec jquery comme ci-dessous. Le lien hypertexte n’a pas d’identifiant mais il possède une classe cssclass

$(document).ready(function () { $('.cssbuttongo').sortinggger('click'); }); 

La fonction ci-dessus ne fonctionne pas. Ceci est le lien hypertexte

 hyperlink anchor 

Merci pour les réponses.

Je n’ai pas de preuve factuelle pour le prouver, mais j’ai déjà rencontré ce problème. Il semble que déclencher un événement click () sur une balise ne semble pas se comporter de la même façon que vous le pensez avec un bouton de saisie.

La solution de contournement que j’ai employée consistait à définir la propriété location.href sur la fenêtre, ce qui obligeait le navigateur à charger la ressource de requête comme suit:

 $(document).ready(function() { var href = $('.cssbuttongo').attr('href'); window.location.href = href; //causes the browser to refresh and load the requested url }); }); 

Modifier:

Je ferais un violon de js mais la nature de la question mélangée avec la façon dont jsfiddle utilise un iframe pour rendre le code rend cela impossible.

La méthode DOM native fait ce qu’il faut:

 $('.cssbuttongo')[0].click(); ^ Important! 

Cela fonctionne indépendamment du fait que le href soit une URL, un fragment (par exemple #blah ) ou même un javascript: #blah

Notez que cela appelle la méthode de click DOM au lieu de la méthode de click jQuery (qui est très incomplète et ignore complètement href ).

En plus de la bonne réponse de romkyns, voici quelques documents / exemples pertinents.


Les éléments DOM ont une .click() native .click() .

La méthode HTMLElement.click() simule un clic de souris sur un élément.

Lorsque click est utilisé, il déclenche également l’événement click de l’élément qui apparaîtra aux éléments situés plus haut dans l’arborescence (ou la chaîne d’événements) et déclenchera également leurs événements de clic. Cependant, la diffusion d’un événement click ne provoquera pas un élément de navigation comme si un véritable clic de souris avait été reçu. (référence mdn)

Documentation W3 pertinente.


Quelques exemples ..

  • Vous pouvez accéder à un élément DOM spécifique à partir d’un object jQuery: (exemple)

     $('a')[0].click(); 
  • Vous pouvez utiliser la méthode .get() pour récupérer un élément DOM à partir d’un object jQuery: (exemple)

     $('a').get(0).click(); 
  • Comme prévu, vous pouvez sélectionner l’élément DOM et appeler la méthode .click() . (Exemple)

     document.querySelector('a').click(); 

Il convient de souligner que jQuery n’est pas requirejs pour déclencher un événement .click() natif.

Déclencher un clic via JavaScript n’ouvrira pas de lien hypertexte. Ceci est une mesure de sécurité intégrée au navigateur.

Voir cette question pour quelques solutions de contournement, cependant.

Je veux juste vous dire que la réponse acceptée ne fonctionne pas toujours.

Voici un exemple, il va échouer.

if

 href = $('css_selector').attr('href') "/list" href = document.querySelector('css_selector').href "http://localhost/list" 

ou vous pouvez append le href que vous avez reçu de jQuery à cette

 href = document.URL +$('css_selector').attr('href'); 

ou jQuery façon

 href = $('css_selector').prop('href') 

Enfin, appelez-le pour changer l’URL de la page actuelle du navigateur

 window.location.href = href 

ou pop-out en utilisant window.open(url)

Voici un exemple dans JSFiddle.

Je devais faire face à un problème similaire, à savoir comment cliquer sur un bouton au lieu d’un lien. Il n’a pas réussi dans les méthodes .sortinggger (‘click’) ou [0] .click (), et je ne savais pas pourquoi. Enfin, ce qui suit travaillait pour moi:

 $('#elementid').mousedown();