使用jQuery将子文件夹添加到所有链接

时间:2010-10-25 17:56:19

标签: jquery hyperlink href staging

我目前正在位于www.example.com/staging的临时环境中的某个网站上工作。该站点的所有链接都已相对设置(例如:/ about /)。我正在尝试编写一些简单的jQuery来为页面上的每个链接添加“/ staging”,因此我不必更改本周的所有链接,因此它在暂存环境中。我知道HTML标签是一个选项,但因为链接是使用ExpressionEngine动态添加的,似乎不起作用。我认为jQuery应该相当简单。这就是我所拥有的,但有些事情是不对的:

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

提前感谢您的帮助。

4 个答案:

答案 0 :(得分:8)

试试这个:

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

答案 1 :(得分:2)

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

$(href)找不到任何内容,因为它只是属性的值。

答案 2 :(得分:1)

您发布的网址示例(/about//staging)不是 relative ;他们 rooted 。这些路径不会像你在这里尝试做的那样。

相对URL永远不会以斜杠开头;它们以路径部分(名称或点)开头。在开头使用斜杠会强制浏览器从主机的根目录查找链接,就像在文件系统中的路径名的开头使用斜杠一样。

答案 3 :(得分:0)

jQuery的替代方法是使用<base>标记。

<base href="http://www.example.com/staging/" />标记中添加<head> 将使您的所有/about/(等)链接以您希望的方式运行。

实际上,我不认为这对你有用。如果您使用about/这些真实相对链接的网址,则会有效。 /about/不是相对链接。我会在这里留下这个答案,以防有人稍后通过谷歌搜索找到这个并需要相对链接的解决方案。

如果您的网址不太常见./about/,则此解决方案可行。如果您以上述方式设置./about/标记,浏览器会将网址http://www.example.com/about/视为<base>而不显示http://www.example.com/staging/about/标记或<base>