web-dev-qa-db-fra.com

Créez dynamiquement et "cliquez" sur un lien avec jQuery

Je veux créer dynamiquement un élément <a href="mailto:...">, puis le "cliquer". Tout cela sans modifier la page.

J'essaye ceci:

$('<a href="mailto:[email protected]">&nbsp;</a>').click();

... en vain

13
aidan

Cliquer sur un lien signifie changer de window.location, alors pourquoi pas 

window.location = "mailto:[email protected]";
15
Alex Korban

Ce n'est pas jQuery, mais cela fonctionne très bien.

var link = document.createElement('a');
link.href = url;
document.body.appendChild(link);
link.click();    
33
solipsicle

Pour que cela fonctionne avec jQuery, vous devez d'abord sélectionner l'élément DOM à l'intérieur de l'objet jQuery.

$('body').append('<a id="link" href="mailto:[email protected]">&nbsp;</a>');
$('#link')[0].click();

Remarquez le [0]

violon: https://jsfiddle.net/fkwhvvhk/

10
jBelanger

Essayez quelque chose comme ça ...

Démo: http://jsfiddle.net/wdm954/xtTGX/1

$('.a').append('<a class="b" href="mailto:[email protected]">&nbsp;</a>');
$('.b').click(function() {
    window.location = $(this).attr('href');
}).click();
4
wdm

.click() fonctionne avec un DOM, pas avec un objet jQuery

cA devrait etre:

$('<a href="mailto:[email protected]"></a>')[0].click();
4
KevinBui

Vous pouvez créer le tag de cette façon:

$('PARENT_TAG').append('<a id="dinamic_link" href="mailto:[email protected]">&nbsp;</a>');
//Now click it
$('#dinamic_link').click();

HTH!

2
SubniC

pourquoi ne pas simplement changer l'emplacement de la fenêtre sur le href du lien? Y a-t-il une raison spécifique pour laquelle vous devez utiliser un lien?

Autrement:

window.location = 'http://example.com';
2
Adam Hutchinson

Je viens de faire un tutoriel à ce sujet! 

$("[href='mailto:[email protected]']").click();

Cela devrait sélectionner tous les éléments avec un attribut href avec "mailto: [email protected]" comme valeur.

www.w3schools.com/jquery/jquery_selectors.asp

1
Gonads
$('#something').append('<a id="link" href="mailto:[email protected]"></a>');
$('#link').trigger('click');
1
genesis

Je dirais que vous devriez envisager d'ajouter le href à un conteneur (principalement div) en utilisant .append () et appeler .click ()

$('parent_div').append('<a id="link" href="mailto:[email protected]">&nbsp;</a>');
//Now click it
$('#link').click();
1
Abdul Kader

Il n'est pas possible de simuler des clics normaux. Vous pouvez uniquement déclencher des gestionnaires d'événements click qui ont été liés à un élément.

Comme @Alex a posté, vous pouvez changer le window.location pour obtenir le même effet ..

1
Gabriele Petrioli
var link = document.createElement('<a>')
link.href = "mailto:[email protected]";
link.id = "hitme"
$('#hitme').click();
0
Vivek

vous devez utiliser .on puis appeler .click. Une hyper référence générée dynamiquement ne fonctionne pas avec un simple .click ()

0
Raj Sharma