Javascript 删除所有目标="_“空白”;从链接
我在处理jQuery时遇到了一个似乎无法解决的问题。我知道使用jQuery是可能的,但是找不到合适的例子。我有一个页面,有几个常规链接,其中添加了属性/valueJavascript 删除所有目标="_“空白”;从链接,javascript,jquery,Javascript,Jquery,我在处理jQuery时遇到了一个似乎无法解决的问题。我知道使用jQuery是可能的,但是找不到合适的例子。我有一个页面,有几个常规链接,其中添加了属性/valuetarget=“\u blank” 使用jQuery/JavaScript从页面上的每个链接中删除该值的最佳方法是什么?使用jQuery应该可以做到这一点 $('a[target="_blank"]').removeAttr('target'); 使用现代浏览器 Array.from(document.querySelectorAll
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
。在一个月的星期天内,我都不会想到第二版——现代浏览器代码。虽然神秘但简洁。