Öffnen Sie alle links in neuen tabs mit jQuery
Habe ich einige links platziert sind, in meine Seite dynamisch via JSON und haben keine Möglichkeit, direkt zu Bearbeiten. Ich möchte erzwingen, dass alle links öffnen in neuen tabs, ala target="_blank"
Dachte das würde funktionieren.. aber leider ist es das nicht. Irgendwelche Ideen?
$('a').attr("target","_blank");
Hier ein jsFiddle mit den dynamischen code:
http://jsfiddle.net/danielredwood/mrgta/7/
Du musst angemeldet sein, um einen Kommentar abzugeben.
Könnten Sie dies tun (die können browser des Benutzers zu entscheiden, ob ein neues Fenster oder tab)
target
Attribut_blank
, so wurde vorgeschlagen, in anderen Antworten, weil ich bin alte Schule, und es funktioniert gut. Aber diese spezielle Lösung---wenn man selbst kümmert sich um solche Dinge sind---ist eigentlich der, der empfohlen werden sollte, wenn man sich über die Validierung (seittarget
ist ein deprecated-Attribut).Dein problem vielleicht ein timing.
Halten Sie im Verstand, wenn Sie Sie nennen so etwas wie
$('a').attr(...whatever...)
, dass es wirksam sofort, auf jegliche und alle bestehenden Elemente auf der Seite. Also ... wenn Ihrtweet
plugin ist asynchron und braucht mehr als 0 Millisekunden durchführen, es sieht aus wie dein code versucht zu ändern-Attribute von links, die gar nicht existieren auf der Seite noch.Ist, könnten Sie (A) den Aufruf der
tweet
plugin, (B) änderung alle links auf der Seite, und dann (C) den tweet-plugin rundet und fügt eine Reihe von neuen links auf der Seite, bekam verpasst früher.So, was Sie versuchen könnte, ist, ob die
tweet
plugin, das Sie verwenden, eine Art "all-done" oder andere Rückruf bei Abschluss, dass könnte man dann ändern können, um die link-tags. Oder, wie eine andere Lösung vorgeschlagen, die ich auch befürworten, ist nicht nur zu versuchen, und ändern Sie das link-tags, sondern stattdessen zu hören (live -) auf alle link-Klicks auf der Seite, und fangen Sie an diesem Punkt in der Zeit. Auf diese Weise, Sie brauchen nicht zu sorgen über den Zeitplan/Fertigstellung der tweet-plugin, da konnte man mithilfe von Ereignis-delegation (live
), die funktioniert an jedem beliebigen Punkt in der Zeit. Siehe die Antwort von Petach für ein großartiges Beispiel dafür, wie dies zu tun.Glück!
Diese funktioniert bei mir:
'new'
mit'_blank'
hat es noch für Sie arbeiten? Nur fragt. Wenn Sie es tut, vielleicht ist der OP hat andere Probleme. Wenn es nicht klappt, würde ich gerne wissen, warum.Funktioniert es nicht, weil die
<a>
ist noch nicht Teil Ihrer Seite, wenn$('a').attr("target","_blank");
ausgelöst wird.Versuchen:
Versuchen Sie auch, "_new" statt leer. Wenn das nicht funktioniert, warum nicht nach den generierten html oder Ihre gesamte javascript-code?