目标空白不起作用?

时间:2018-03-18 17:57:17

标签: jquery hyperlink target squarespace

我正在尝试使用" attr"获取我在新窗口中打开的链接。 jQuery中的功能没有运气。

以下是客户网站:http://www.sunsetstudiosent.com在"新闻"部分。

此外,还有一种方法可以区分并将其应用于非现场链接的链接吗?

comment

2 个答案:

答案 0 :(得分:0)

一行vanilla Javascript将为您完成;不需要jQuery:

document.querySelectorAll('#block-8c94657a90c2362b8126 .summary-title-link')
    .forEach(function(x) {
        x.setAttribute('target', '_blank');
    });

类似的代码,在应用target="_blank"之前还检查链接是否在同一个域上:

document.querySelectorAll('#block-8c94657a90c2362b8126 .summary-title-link')
    .forEach(function(x) {
        var url = new URL(x.href);
        if (url.host !== window.location.host) {
            x.setAttribute('target', '_blank');
        }
    });

如果您不确定是否会添加这些元素上的链接,您可能希望将函数体包装在try-catch块中。

答案 1 :(得分:0)

因为$(this)持有.summary-item而不是锚标记......

因此$(this).attr('target', '_blank')会将target属性添加到.summary-item而不是<a>代码...

所以你需要在这里更改逻辑...尝试在这里使用find() jQuery

$(this).find("a").attr('target', '_blank');

所以你的完整代码将是

var sBlock = $('[data-block-json*="9dac9e62587eab820575"]'),
  items = sBlock.find('.summary-item');
$.each(items, function() {
  var $this = $(this),
    itemLink = $this.find('.summary-title a').attr('href');
  $this.find('.summary-read-more-link').attr('href', itemLink);
  $this.find('.summary-metadata-item a').attr('href', itemLink);
  $(this).find("a").attr('target', '_blank');
});