So ändern Sie die href für einen hyperlink using jQuery
-
05-07-2019 - |
Frage
Wie können Sie die href für einen hyperlink using jQuery?
Lösung
Mit
$("a").attr("href", "http://www.google.com/")
das href aller Hyperlinks ändern, um Google zu verweisen. Sie wollen wahrscheinlich eine etwas raffiniertere obwohl Selektor. Zum Beispiel, wenn Sie eine Mischung aus Verknüpfungsquelle haben (Hyperlink) und Link-Ziel (auch bekannt als „Anker“) Anker-Tags:
<a name="MyLinks"></a>
<a href="http://www.codeproject.com/">The CodeProject</a>
... Dann haben Sie wahrscheinlich nicht wollen, versehentlich hinzufügen href
ihnen zuschreibt. Aus Sicherheitsgründen können dann angeben, dass wir unsere Wähler nur <a>
Tags mit einem vorhandenen href
Attribute übereinstimmen:
$("a[href]") //...
Natürlich, werden Sie wahrscheinlich etwas Interessanteres im Sinn haben. Wenn Sie einen Anker mit einem bestimmten vorhandenen href
übereinstimmen soll, könnten Sie etwas wie folgt verwenden:
$("a[href='http://www.google.com/']").attr('href', 'http://www.live.com/')
Dies wird Links finden, wo die href
genau die Zeichenfolge http://www.google.com/
übereinstimmt. Eine beteiligte Aufgabe passend sein könnte, dann nur einen Teil der href
Aktualisierung:
$("a[href^='http://stackoverflow.com']")
.each(function()
{
this.href = this.href.replace(/^http:\/\/beta\.stackoverflow\.com/,
"http://stackoverflow.com");
});
Der erste Teil wählt nur Links, wo die href startet mit http://stackoverflow.com
. Dann wird eine Funktion definiert, die mit einem einfachen regulären Ausdruck verwendet diesen Teil der URL durch einen neuen zu ersetzen. Beachten Sie die Flexibilität, das gibt Ihnen -. Jede Art von Modifikation des Link hier getan werden könnte
Andere Tipps
Mit jQuery 1.6 und höher sollten Sie verwenden:
$("a").prop("href", "http://www.jakcms.com")
Der Unterschied zwischen prop
und attr
ist, dass attr
das HTML-Attribut packt während prop
die DOM-Eigenschaft greift.
Sie können mehr Informationen in diesem Beitrag finden: .prop () vs .attr ()
Mit der attr
Methode auf Nachschlag. Sie können jedes Attribut mit einem neuen Wert wechseln aus.
$("a.mylink").attr("href", "http://cupcream.com");
Je nachdem, ob Sie sonst alle identischen Links zu etwas ändern oder einstellen wollen, nur die, die in einem bestimmten Abschnitt der Seite oder jeder einzeln, Sie eins von diesen tun könnte.
Ändern Sie alle Links zu Google, so dass sie auf Google Maps zeigen:
<a href="http://www.google.com">
$("a[href='http://www.google.com/']").attr('href',
'http://maps.google.com/');
Um Links in einem bestimmten Abschnitt zu ändern, fügen die Klasse des div-Container an die Wähler. In diesem Beispiel wird den Google-Link in dem Inhalt ändern, aber nicht in der Fußzeile:
<div class="content">
<p>...link to <a href="http://www.google.com/">Google</a>
in the content...</p>
</div>
<div class="footer">
Links: <a href="http://www.google.com/">Google</a>
</div>
$(".content a[href='http://www.google.com/']").attr('href',
'http://maps.google.com/');
Um einzelne Links zu ändern, unabhängig davon, wo sie in dem Dokument fallen, fügen Sie eine ID auf den Link und dann diese ID zu dem Selektor hinzuzufügen. In diesem Beispiel wird den zweiten Google-Link in dem Inhalt ändern, aber nicht die erste oder die in der Fußzeile:
<div class="content">
<p>...link to <a href="http://www.google.com/">Google</a>
in the content...</p>
<p>...second link to <a href="http://www.google.com/"
id="changeme">Google</a>
in the content...</p>
</div>
<div class="footer">
Links: <a href="http://www.google.com/">Google</a>
</div>
$("a#changeme").attr('href',
'http://maps.google.com/');
Auch wenn die OP explizit für eine jQuery Antwort gefragt, brauchen Sie nicht in diesen Tagen jQuery für alles zu verwenden.
Einige Methoden ohne jQuery:
-
Wenn Sie den
href
Wert von alle<a>
Elemente zu ändern, wählen sie alle und dann durch die nodelist : (Beispiel)var anchors = document.querySelectorAll('a'); Array.prototype.forEach.call(anchors, function (element, index) { element.href = "http://stackoverflow.com"; });
-
Wenn Sie den
href
Wert aller<a>
Elemente ändern, die eigentlich einhref
Attribut haben, markieren Sie sie, indem Sie den[href]
Attributselektor Hinzufügen (a[href]
): (Beispiel)var anchors = document.querySelectorAll('a[href]'); Array.prototype.forEach.call(anchors, function (element, index) { element.href = "http://stackoverflow.com"; });
-
Wenn Sie den
href
Wert von<a>
Elementen ändern mögen, dass enthalten ein bestimmte Wert, zum Beispielgoogle.com
, den Attributselektora[href*="google.com"]
verwenden: (Beispiel)var anchors = document.querySelectorAll('a[href*="google.com"]'); Array.prototype.forEach.call(anchors, function (element, index) { element.href = "http://stackoverflow.com"; });
Ebenso können Sie auch die anderen Attributselektoren . Zum Beispiel:
-
a[href$=".png"]
verwendet werden könnte<a>
Elemente, derenhref
Wert endet mit.png
. wählen
-
a[href^="https://"]
verwendet werden könnten<a>
Elemente mithref
Werte auszuwählen, die Präfix mithttps://
.
-
-
Wenn Sie den
href
Wert von<a>
Elemente ändern, die mehrere Bedingungen erfüllen: (Beispiel)var anchors = document.querySelectorAll('a[href^="https://"], a[href$=".png"]'); Array.prototype.forEach.call(anchors, function (element, index) { element.href = "http://stackoverflow.com"; });
.. keine Notwendigkeit für regex, in die meisten Fälle.
Dieser Code-Schnipsel ruft, wenn eine Verbindung der Klasse ‚menu_link‘ geklickt wird, und zeigt den Text und die URL des Links. Die return false verhindert, dass die Verbindung von gefolgt wird.
<a rel='1' class="menu_link" href="option1.html">Option 1</a>
<a rel='2' class="menu_link" href="option2.html">Option 2</a>
$('.menu_link').live('click', function() {
var thelink = $(this);
alert ( thelink.html() );
alert ( thelink.attr('href') );
alert ( thelink.attr('rel') );
return false;
});
Stop jQuery verwenden, nur um von ihm! Dies ist so einfach mit JavaScript nur.
document.querySelector('#the-link').setAttribute('href', 'http://google.com');
Der einfache Weg, dies zu tun ist:
Attr Funktion (seit jQuery Version 1.0)
$("a").attr("href", "https://stackoverflow.com/")
oder
Prop Funktion (seit jQuery Version 1.6)
$("a").prop("href", "https://stackoverflow.com/")
Auch ist der Vorteil von oben Art und Weise, dass, wenn Wähler einen einzigen Anker wählen, wird es diesen Anker nur aktualisieren und wenn Wähler eine Gruppe von Ankerzurückkehrt, wird es die spezifische Gruppe durch eine Anweisung nur aktualisieren.
Nun, es gibt viele Möglichkeiten, genaue Anker oder eine Gruppe von Ankern zu identifizieren:
Ganz einfach Ones:
- Wählen Sie Anker durch Tag-Namen:
$("a")
- Wählen Anker durch Index:
$("a:eq(0)")
- Wählen Anker für bestimmte Klassen (wie in dieser Klasse nur Anker
mit Klasse
active
):$("a.active")
- Auswählen Anker mit spezifischer ID (hier in Beispiel
profileLink
ID):$("a#proileLink")
- Auswählen des ersten Anker href:
$("a:first")
Mehr Nützlichen:
- Auswahl aller Elemente mit Attribut href:
$("[href]")
- Auswahl aller Anker mit spezifischen href:
$("a[href='www.stackoverflow.com']")
- Auswahl aller Anker nicht mit spezifischen href:
$("a[href!='www.stackoverflow.com']")
- Auswahl aller Anker mit href mit spezifischer URL:
$("a[href*='www.stackoverflow.com']")
- Auswahl aller Anker mit href mit spezifischer URL Start:
$("a[href^='www.stackoverflow.com']")
- Auswahl aller Anker mit href Ende mit spezifischer URL:
$("a[href$='www.stackoverflow.com']")
Nun, wenn Sie bestimmte URLs ändern möchten, können Sie das tun, wie:
Zum Beispiel, wenn Sie Proxy-Website für alle URLs gehen zu google.com hinzufügen möchten, können Sie es wie folgt implementieren:
$("a[href^='http://www.google.com']")
.each(function()
{
this.href = this.href.replace(/http:\/\/www.google.com\//gi, function (x) {
return "http://proxywebsite.com/?query="+encodeURIComponent(x);
});
});
$("a[href^='http://stackoverflow.com']")
.each(function()
{
this.href = this.href.replace(/^http:\/\/beta\.stackoverflow\.com/,
"http://stackoverflow.com");
});
Ändern Sie das HREF-das Wordpress Avada Theme-Logo-Bild
Wenn Sie installieren Sie den ShortCode Exec PHP plugin Sie können diese Kurzwahlnummer, die ich rief myjavascript
?><script type="text/javascript">
jQuery(document).ready(function() {
jQuery("div.fusion-logo a").attr("href","tel:303-985-9850");
});
</script>
Gehen Sie jetzt auf Appearance/Widgets und wählen Sie einen der Fußzeile widget-Bereiche und verwenden Sie einen text-widget fügen Sie den folgenden shortcode
[myjavascript]
Der Selektor kann sich ändern je nach Bild, was Ihr mit, und wenn es ist retina bereit, aber Sie können immer herausfinden, indem Entwickler-tools.
href
in einem Attribute, so dass Sie es mit reinem JavaScript ändern können, aber wenn Sie bereits in Ihrer Seite jQuery injiziert haben, keine Sorge, ich es in beiden Richtungen zeigen:
Stellen Sie sich vor Sie haben diese href
unter:
<a id="ali" alt="Ali" href="http://dezfoolian.com.au">Alireza Dezfoolian</a>
Und Sie wollen es den Link ändern ...
Mit reiner JavaScript ohne Bibliothek können Sie tun:
document.getElementById("ali").setAttribute("href", "https://stackoverflow.com");
Aber auch in jQuery Sie tun können:
$("#ali").attr("href", "https://stackoverflow.com");
oder
$("#ali").prop("href", "https://stackoverflow.com");
In diesem Fall, wenn Sie bereits jQuery injiziert, wahrscheinlich aussehen jQuery eine kürzere und Cross-Browser ... aber anders als das ich mit dem JS
gehen ein ...