jQuery添加目标_blank未在新标签

时间:2017-03-11 08:06:26

标签: javascript jquery

在参考this SO question时,我正在尝试让我的网站正常工作,以便在新标签页中打开任何外部链接。

上述问题的每个答案的jQuery都有效(这意味着当我使用Chrome或Safari的检查器时,我会看到target="_blank"被添加到外部链接,但点击链接本身并不会在新标签中打开或新窗口。

是否更改了现代浏览器,以便此功能不再有效?或者我错过了其他什么?

更新: Per @ hakam-fostok的请求,以下是相关代码:

JS:

$(function() {
  $('a').attr('target', function() {
    if(this.host == location.host) return '_self'
    else return '_blank'
  });
});

链接(如Chrome检查器中所示):

<a href="http://espn.com" target="_blank">ESPN</a>

更新2:我不确定这是否重要,但应用程序是Rails 4.2.7.1,运行jQuery 2.2.4。

1 个答案:

答案 0 :(得分:1)

通常,如果要修改现有HTML元素的运行时属性,则必须使用prop函数而不是attr。请参阅文档here

简单单词的不同之处在于prop设置HTML元素的相应属性,而attr仅设置 属性值。属性值将成为运行时属性的初始值。

$(function() {
  $('a').prop('target', function() {
    if(this.host == location.host) return '_self'
    else return '_blank'
  });
});