首页 > 解决方案 > jQuery:动态更改所有 href 值

问题描述

我一直在寻找这样的问题,但他们都没有回答我的问题。

请原谅我,因为我有时缺乏解释自己的能力。

我在sub1.domain.com中有一个页面,其中所有链接的格式为

<a href="/link?param=whatever">

我正在使用 jQuery 将基域更改为sub2.domain.com,然后将 /link 部分与页面上所有 href 的主机不同。我在研究这个问题时发现了这个片段。这是代码:

$('a').each(function() {
  $(this).attr("href", function(index, old) {
        return old.replace("/link", "https://sub2.domain1.com/link");
  });
});

它就像静态链接的魅力,但问题是该页面是一个搜索结果页面,即使在页面加载后也会动态加载新结果。

如何使其动态化,以便搜索加载的所有链接都由该脚本自动修改?换句话说,我如何将此脚本应用于页面加载后出现的链接并且新结果进来?

在这种情况下,base href 将不起作用,因为它会以某种方式破坏整个页面。

谢谢你。

标签: javascriptjquerydynamic

解决方案


您实际上可以将此事件绑定到单击。因此,当单击链接时,它将运行此功能并更改链接。然后,只要它绑定到父级或文档,这也会更改任何新链接,例如下面

$(document).on('click', 'a', function(e){
  e.preventDefault();

  var link = $(this).attr( 'href' );
  link = link.replace("/link", "https://sub2.domain1.com/link");
  window.location.href = link;
});  

推荐阅读