Ouvrir tous les liens dans de nouveaux onglets avec jQuery
J'ai quelques liens qui sont placés dans ma page dynamiquement via JSON et n'ont aucun moyen de les éditer directement. Je veux forcer tous les liens s'ouvrent dans de nouveaux onglets, ala target="_blank"
Pensé que ce serait un travail.. mais malheureusement il ne l'est pas. Des idées?
$('a').attr("target","_blank");
Voici un jsFiddle avec la dynamique de code:
http://jsfiddle.net/danielredwood/mrgta/7/
OriginalL'auteur technopeasant | 2011-06-09
Vous devez vous connecter pour publier un commentaire.
Vous pourriez le faire (ce qui permet au navigateur d'utilisateurs de décider de l'ouverture d'une nouvelle fenêtre ou onglet)
target
attribut_blank
, comme il était suggéré dans d'autres réponses, parce que je suis de la vieille école et il fonctionne bien. Mais cette solution---si l'on se soucie même de ce genre de choses---qui est en fait celui qui devrait être recommandé si l'on se soucie de la validation (depuistarget
est déconseillé d'attribut).P. S., veuillez voir ma réponse distincte sur cette page, qui approuve cette réponse pour une autre raison: le timing.
OriginalL'auteur Petah
Votre problème est peut-être l'un de calendrier.
Gardez à l'esprit, lorsque vous appelez quelque chose comme
$('a').attr(...whatever...)
, qu'elle prendra effet instantanément, lors de tout et de tous existant éléments sur la page. Alors, ... si votretweet
plugin est asynchrone et prend plus de 0 millisecondes à effectuer, il ressemble à votre code est d'essayer de changer les attributs des liens qui n'existent même pas sur la page de.Qui est, vous pourriez être (A) l'appel de la
tweet
plugin, (B) la modification de tous les liens sur la page, puis (C) le tweet plugin complète et injecte un tas de nouveaux liens sur la page qui ai manqué plus tôt.Donc, ce que vous pourriez essayer, c'est de voir si le
tweet
plugin que vous utilisez a une sorte de "tout-fait" ou autre rappel d'achèvement, que vous pouvez ensuite utiliser pour changer autour de le lien balises. Ou, comme une autre réponse a suggéré, que j'ai également approuver, est de ne pas juste essayer et modifier les balises link, mais plutôt que d'écouter (live) un lien clique sur la page, et de les intercepter à ce point dans le temps. De cette façon, vous n'avez pas besoin de s'inquiéter sur le calendrier d'achèvement de l'tweet plugin, car vous pourriez utiliser l'événement de la délégation (live
) qui fonctionne à n'importe quel point dans le temps. Voir la réponse de Petah pour un excellent exemple de la façon de le faire.Bonne chance!
OriginalL'auteur Funka
Cela fonctionne pour moi:
'new'
avec'_blank'
t-il encore du travail pour vous? Une simple demande. Si elle le fait, peut-être que l'OP a d'autres questions. Si ça ne marche pas, j'aimerais savoir pourquoi.Maple - Pas de dés. Chargé un jsFiddle à démontrer. Publié dans la question
bon point qui fonctionne aussi bien.
Maple - j'ai oublié de mentionner que votre code fonctionne sur les liens existants, mais pas les liens chargé via JSON.
c'est dans le jsFiddle. À l'aide d'un Twitter plug in.
OriginalL'auteur Dave Maple
Il ne fonctionne pas parce que le
<a>
ne fait pas encore partie de votre page lorsque$('a').attr("target","_blank");
est déclenché.Je ne suis pas sûr.
OriginalL'auteur Sparky
Essayer:
Aussi, essayez de "_new" au lieu de blanc. Si cela ne fonctionne pas, pourquoi ne pas les afficher le code html généré ou l'ensemble de votre code javascript?
OriginalL'auteur GGCO