使用jQuery将子文件夹前置到所有链接

使用jQuery将子文件夹前置到所有链接,jquery,hyperlink,href,staging,Jquery,Hyperlink,Href,Staging,我目前正在位于www.example.com/staging的登台环境中的一个站点上工作。该站点的所有链接都已相对设置(例如:/about/)。我正在尝试编写一些简单的jQuery来向页面上的每个链接添加“/staging”,这样我就不必更改staging环境中一周左右的所有链接。我知道HTML标记是一个选项,但因为链接是用ExpressionEngine动态添加的,所以似乎不起作用。我认为jQuery应该相当简单。这是我所拥有的,但有些地方不太对劲: $(function() { var

我目前正在位于www.example.com/staging的登台环境中的一个站点上工作。该站点的所有链接都已相对设置(例如:/about/)。我正在尝试编写一些简单的jQuery来向页面上的每个链接添加“/staging”,这样我就不必更改staging环境中一周左右的所有链接。我知道HTML标记是一个选项,但因为链接是用ExpressionEngine动态添加的,所以似乎不起作用。我认为jQuery应该相当简单。这是我所拥有的,但有些地方不太对劲:

$(function() {
  var href = $('a').attr('href');
  $(href).prepend('/staging');
});
提前谢谢你的帮助

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

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

您发布的URL示例(
/about/
/staging
)不是相对的;它们扎根了。这些路径不会执行您在此处尝试执行的操作

相对URL从不以斜杠开头;它们以路径部分(名称或点)开始。将斜杠放在开头会强制浏览器从主机的根位置查看链接,就像在文件系统中的路径名开头放斜杠一样。

尝试以下操作:

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

jQuery的另一种选择是使用标记

标签中添加
将使所有的
/about/
(etc)链接按您想要的方式工作

事实上,我不认为这对你有用。如果你有像
about/
这样的URL,它们是真实的相对链接,那么这就行了<代码>/about/不是相对链接。我将把这个答案留在这里,以防有人稍后通过谷歌搜索找到它,并需要一个相对链接的解决方案


如果您的URL是不太常见的形式
/about/
,那么这个解决方案就行了。浏览器会将URL
/about/
视为(并显示为)
http://www.example.com/about/
标签或as
http://www.example.com/staging/about/
如果您以上述方式设置了
标记。

这将更改所有链接,使其与页面上的第一个链接相同(有了
staging
prepend)。哇,我得把裂缝停下来了……修好了。谢谢你的接球。太好了!这一个效果很好。@shoebox639的回答似乎把所有的HREF都改成了/staging/staging。谢谢你的帮助。