【发布时间】:2017-02-06 23:32:43
【问题描述】:
我在搞乱 jQuery,遇到了一个我似乎无法解决的问题。我知道使用 jQuery 是可能的,但找不到合适的示例来解决。我有一个带有几个常规链接的页面,其中添加了属性/值target="_blank"。
使用 jQuery/JavaScript 从页面上的每个链接中删除该值的最佳方法是什么?
【问题讨论】:
标签: javascript jquery
我在搞乱 jQuery,遇到了一个我似乎无法解决的问题。我知道使用 jQuery 是可能的,但找不到合适的示例来解决。我有一个带有几个常规链接的页面,其中添加了属性/值target="_blank"。
使用 jQuery/JavaScript 从页面上的每个链接中删除该值的最佳方法是什么?
【问题讨论】:
标签: javascript jquery
这应该用 jQuery 来做...
$('a[target="_blank"]').removeAttr('target');
使用现代浏览器...
Array.from(document.querySelectorAll('a[target="_blank"]'))
.forEach(link => link.removeAttribute('target'));
使用较旧的浏览器,例如早期的 IE...
var links = document.links, i, length;
for (i = 0, length = links.length; i < length; i++) {
links[i].target == '_blank' && links[i].removeAttribute('target');
}
【讨论】:
.slice()?由于您使用的是.forEach(),因此只需设置该方法的上下文即可。 [].forEach.call(document.querySelectorAll(...
if (links[i].target == '_blank') links[i].removeAttribute('target'); 或将其设置为 '' 不管:links[i].target = '';
removeAttribute() 会比将target 设置为空字符串更干净,我知道即使属性丢失它也是空的,但我不确定如果我在属性存在时设置为空它是否会删除它已经,这并不重要,因为结果是一样的。 设置它不管 将覆盖不是_blank 的target 属性。