3 Stimmen

Voranstellen von Unterordnern an alle Links mit jQuery

Ich arbeite derzeit an einer Website in einer Staging-Umgebung unter www.example.com/staging. Alle Links für die Website wurden relativ gesetzt (z. B. /about/). Ich versuche, einige einfache jQuery zu schreiben, um "/staging" zu jedem Link auf den Seiten hinzufügen, so dass ich nicht haben, um alle Links für die Woche oder so ist es in der Staging-Umgebung zu ändern. Ich weiß, dass der HTML-Tag eine Option ist, aber da die Links mit ExpressionEngine dynamisch hinzugefügt werden, scheint das nicht zu funktionieren. Ich denke, die jQuery sollte ziemlich einfach sein. Hier ist, was ich habe, aber etwas ist nicht ganz richtig:

$(function() {
  var href = $('a').attr('href');
  $(href).prepend('/staging');
});

Vielen Dank im Voraus für die Hilfe.

8voto

Versuchen Sie dies:

$(function() {
  $('a').each(function() {
    var href = $(this).attr('href');
    $(this).attr('href', '/staging' + href);
  });
});

2voto

shoebox639 Punkte 2272
$(function() {
  $('a').each(function() {
    $(this).attr('href', '/staging' + $(this).attr('href'));
  });
});

$(href) findet nichts, weil es nur der Wert des Attributs ist.

1voto

Andrew Barber Punkte 38387

Die von Ihnen angegebenen URL-Beispiele ( /about/ y /staging ) sind nicht relativ ; sie sind verwurzelt . Diese Wege werden nicht das bewirken, was Sie hier zu tun versuchen.

Relative URLs beginnen nie mit einem Schrägstrich; sie beginnen mit einem Pfadteil (einem Namen oder Punkten). Durch den Schrägstrich am Anfang wird der Browser gezwungen, vom Stamm des Hosts aus nach dem Link zu suchen, genau wie es der Schrägstrich am Anfang eines Pfadnamens in einem Dateisystem tut.

0voto

Blair McMillan Punkte 5289

Eine Alternative zu jQuery ist die Verwendung der <base> Tag.

Hinzufügen von <base href="http://www.example.com/staging/" /> innerhalb Ihr <head> Tag werden alle Ihre /about/ (usw.) so funktionieren, wie Sie es wünschen.

Ich glaube aber nicht, dass das bei Ihnen funktioniert. Es würde funktionieren, wenn Sie URLs hätten wie about/ die sind real relative Links. /about/ ist kein relativer Link. Ich lasse diese Antwort hier, falls jemand später durch eine Google-Suche darauf stößt und eine Lösung braucht für relativ Links.

Wenn Ihre URLs die weniger übliche Form haben ./about/ dann würde diese Lösung funktionieren. Die Browser würden die URL behandeln (und anzeigen) ./about/ comme http://www.example.com/about/ ohne eine <base> Tag oder als http://www.example.com/staging/about/ wenn Sie eine <base> Tag wie oben beschrieben.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X