Javascript 删除所有目标="_“空白”;从链接

Javascript 删除所有目标="_“空白”;从链接,javascript,jquery,Javascript,Jquery,我在处理jQuery时遇到了一个似乎无法解决的问题。我知道使用jQuery是可能的,但是找不到合适的例子。我有一个页面,有几个常规链接,其中添加了属性/valuetarget=“\u blank” 使用jQuery/JavaScript从页面上的每个链接中删除该值的最佳方法是什么?使用jQuery应该可以做到这一点 $('a[target="_blank"]').removeAttr('target'); 使用现代浏览器 Array.from(document.querySelectorAll

我在处理jQuery时遇到了一个似乎无法解决的问题。我知道使用jQuery是可能的,但是找不到合适的例子。我有一个页面,有几个常规链接,其中添加了属性/value
target=“\u blank”


使用jQuery/JavaScript从页面上的每个链接中删除该值的最佳方法是什么?

使用jQuery应该可以做到这一点

$('a[target="_blank"]').removeAttr('target');
使用现代浏览器

Array.from(document.querySelectorAll('a[target="_blank"]'))
  .forEach(link => link.removeAttribute('target'));
使用旧浏览器(如早期IEs)时

var links = document.links, i, length;

for (i = 0, length = links.length; i < length; i++) {
    links[i].target == '_blank' && links[i].removeAttribute('target');
}
var links=document.links,i,长度;
对于(i=0,length=links.length;i
为什么要费心于
.slice()
?因为您使用的是
.forEach()
,所以只需设置该方法的上下文即可<代码>[].forEach.call(document.queryselectoral(…@amnotiam)我没有考虑过这一点,但这确实是一个更好的实现方法。谢谢你的评论,我已经更新了我的答案。我不太喜欢用比较表达式来做事情,我和其他人可能会使用两个额外的字符并写:
if(links[I].target==''u blank')links[i].removeAttribute('target');
或者直接将其设置为“”,不管:
links[i].target='';
@RobG一开始我同意这可能有点难理解。我认为
removeAttribute()
比将
target
设置为空字符串更干净,即使属性缺失,我也知道它是空的,但我不确定如果在属性已经存在时设置为空,它是否会删除属性,这并不重要,因为结果是一样的。不管设置它,都会覆盖不存在的
target
属性
\u blank
。在一个月的星期天内,我都不会想到第二版——现代浏览器代码。虽然神秘但简洁。