使用jQuery将子文件夹前置到所有链接
我目前正在位于www.example.com/staging的登台环境中的一个站点上工作。该站点的所有链接都已相对设置(例如:/about/)。我正在尝试编写一些简单的jQuery来向页面上的每个链接添加“/staging”,这样我就不必更改staging环境中一周左右的所有链接。我知道HTML标记是一个选项,但因为链接是用ExpressionEngine动态添加的,所以似乎不起作用。我认为jQuery应该相当简单。这是我所拥有的,但有些地方不太对劲:使用jQuery将子文件夹前置到所有链接,jquery,hyperlink,href,staging,Jquery,Hyperlink,Href,Staging,我目前正在位于www.example.com/staging的登台环境中的一个站点上工作。该站点的所有链接都已相对设置(例如:/about/)。我正在尝试编写一些简单的jQuery来向页面上的每个链接添加“/staging”,这样我就不必更改staging环境中一周左右的所有链接。我知道HTML标记是一个选项,但因为链接是用ExpressionEngine动态添加的,所以似乎不起作用。我认为jQuery应该相当简单。这是我所拥有的,但有些地方不太对劲: $(function() { var
$(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/
无
标签或ashttp://www.example.com/staging/about/
如果您以上述方式设置了
标记。这将更改所有链接,使其与页面上的第一个链接相同(有了staging
prepend)。哇,我得把裂缝停下来了……修好了。谢谢你的接球。太好了!这一个效果很好。@shoebox639的回答似乎把所有的HREF都改成了/staging/staging。谢谢你的帮助。