3

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

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

在此先感谢您的帮助。

4

4 回答 4

8

试试这个:

$(function() {
  $('a').each(function() {
    var href = $(this).attr('href');
    $(this).attr('href', '/staging' + href);
  });
});
于 2010-10-25T18:05:15.890 回答
2
$(function() {
  $('a').each(function() {
    $(this).attr('href', '/staging' + $(this).attr('href'));
  });
});

$(href)没有找到任何东西,因为它只是属性的值。

于 2010-10-25T18:00:28.383 回答
1

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

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

于 2010-10-25T18:02:51.503 回答
0

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

在您的标签<base href="http://www.example.com/staging/" /> 添加<head>将使您的所有/about/(等)链接以您想要的方式工作。

实际上,我认为这对您不起作用。如果你有像真正的相对链接这样的 URL about/,它会起作用。不是相对链接。我会在这里留下这个答案,以防有人稍后通过谷歌搜索找到这个答案并需要相关链接的解决方案。/about/

如果您的 URL 是不太常见的形式,./about/那么此解决方案将起作用。浏览器会将 URL./about/视为(并显示)http://www.example.com/about/没有<base>标签或http://www.example.com/staging/about/<base>以上述方式设置标签。

于 2010-10-25T18:32:27.457 回答