我目前正在位于www.example.com/staging的临时环境中的某个网站上工作。该站点的所有链接都已相对设置(例如:/ about /)。我正在尝试编写一些简单的jQuery来为页面上的每个链接添加“/ staging”,因此我不必更改本周的所有链接,因此它在暂存环境中。我知道HTML标签是一个选项,但因为链接是使用ExpressionEngine动态添加的,似乎不起作用。我认为jQuery应该相当简单。这就是我所拥有的,但有些事情是不对的:
$(function() {
var href = $('a').attr('href');
$(href).prepend('/staging');
});
提前感谢您的帮助。
答案 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>
。