2008-11-03 7 views
2

J'essaie d'apprendre jQuery, pour compenser mes compétences javascript anémiques. Comme un projet de test, j'ai une page pleine de liens, et je veux avoir un bouton sur la page ouvrir tous les liens dans de nouveaux onglets. Les liens ont tous des attributs target = "_ blank".jQuery - ouvrir tous les liens sur une page

J'utilise ce

$('button').click(function() { 
    $('a').click(); 
);} 

Je l'ai testé la syntaxe de sélection en modifiant le code CSS des liens, donc je suis sûr que ce soit ok. Que dois-je changer pour que le lien s'ouvre?

Répondre

11

vous ne pouvez pas manipuler les onglets via javascript (vous pouvez demander à un lien de s'ouvrir dans une nouvelle fenêtre, vous ne pouvez pas lui dire de l'ouvrir dans un onglet). ce que vous pourriez vouloir essayer si vous voulez essayer quelque chose comme ceci:

$('button').click(function() { 
    $('a').each(function() { 
    window.open($(this).attr('href')); 
    }); 
}); 

essentiellement, lorsque <button> est cliquée, pour chaque élément <a>, passer la valeur href à window.open. ou fondamentalement, des tas de fenêtres ouvertes en supposant que vous n'avez pas bloqueur de pop up :)

votre code actuel dit essentiellement, lorsque vous appuyez sur <button>, activez le gestionnaire onclick() de tous <a> éléments.

modifier: en réponse aux commentaires, comparer ce code qui imite la fonctionnalité de l'OP:

$('a').click(function() { 
// assign an event to a.onclick 
    window.open($(this).attr('href')); 
}); 

$('button').click(function() { 
// when we press <button>, trigger a.onclick 
    $('a').click(); 
}); 

parce que nous avons déclaré une première fonctionnalité onclick(), nous avons maintenant le même comportement que mon code d'origine. (piles de fenêtres ouvertes)

+0

Bien que je comprenne votre code et que vous ne puissiez pas ouvrir les liens dans les onglets, quel est le problème avec le code fourni par OP? Merci. – shahkalpesh

+0

le code OP basculera le gestionnaire d'événement onclick de chaque élément . cependant, en supposant que c'est le seul code, onclick est indéfini, et donc rien ne se passe – Owen

+0

En fait, la syntaxe .each() a fonctionné pour ce dont j'avais besoin. Dans le contexte que je l'utilise, chaque lien s'ouvre dans son propre onglet, pas dans la fenêtre. Comme c'est pour mon usage personnel, je ne suis pas inquiet à l'idée d'être à l'épreuve des balles pour les autres utilisateurs/navigateurs. – Jason

Questions connexes