Добавить подпапку ко всем ссылкам с помощью jQuery - PullRequest
3 голосов
/ 25 октября 2010

В настоящее время я работаю над сайтом в промежуточной среде, расположенной по адресу www.example.com/staging.Все ссылки на сайт были установлены относительно (например: / about /).Я пытаюсь написать несколько простых jQuery для добавления «/ staging» к каждой ссылке на страницах, поэтому мне не нужно менять все ссылки за неделю или около того, как это происходит в промежуточной среде.Я знаю, что HTML-тег - это вариант, но поскольку ссылки добавляются динамически с ExpressionEngine, который, похоже, не работает.Я думаю, что JQuery должен быть довольно простым.Вот что у меня есть, но что-то не так:

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

Заранее спасибо за помощь.

Ответы [ 4 ]

8 голосов
/ 25 октября 2010

Попробуйте это:

$(function() {
  $('a').each(function() {
    var href = $(this).attr('href');
    $(this).attr('href', '/staging' + href);
  });
});
2 голосов
/ 25 октября 2010
$(function() {
  $('a').each(function() {
    $(this).attr('href', '/staging' + $(this).attr('href'));
  });
});

$(href) не находит ничего, потому что это просто значение атрибута.

1 голос
/ 25 октября 2010

Примеры URL, которые вы разместили (/about/ и /staging), не являются относительными ; они имеют корни . Эти пути не будут делать то, что вы, похоже, пытаетесь сделать здесь.

Относительные URL никогда не начинаются с косой черты; они начинаются с части пути (имя или точки). Наличие косой черты в начале заставляет браузер искать ссылку в корне хоста, точно так же, как косая черта в начале имени пути в файловой системе.

0 голосов
/ 25 октября 2010

Альтернативой jQuery является использование тега <base>.

Добавление <base href="http://www.example.com/staging/" /> внутри ваш тег <head> сделает все ваши /about/ (и т. Д.) Ссылки работают так, как вы хотите.

На самом деле, я не думаю, что это сработает для вас.Это будет работать, если у вас есть URL-адреса, такие как about/, которые являются реальными относительными ссылками./about/ не является относительной ссылкой.Я оставлю этот ответ здесь на тот случай, если кто-нибудь найдет его позже с помощью поиска в Google и ему потребуется решение для относительных ссылок.

Если ваши URL-адреса имели менее распространенную форму ./about/,это решение будет работать.Браузеры будут обрабатывать (и отображать) URL ./about/ как http://www.example.com/about/ без тега <base> или как http://www.example.com/staging/about/, если вы установите тег <base> вышеописанным способом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...