我正在开发一个项目,不允许使用jQuery。我正在寻找下面jquery的等效纯Javascript代码:
$('img[alt="Apple Store Logo"]').parent().removeAttr("target");
我找到了以下信息:
jQuery Javascript
parent() : .parentElement
removeAttr() : removeAttribute()
无法找到如何构建上面的选择器。
答案 0 :(得分:4)
您可以使用querySelectorAll()
获取与指定选择器匹配的NodeList
。然后实现forEach()
迭代所有元素以从元素的父节点中删除属性
parentNode
和removeAttribute()
。
尝试以下方法:
document.querySelectorAll('img[alt="Apple Store Logo"]').forEach(function(el){
el.parentNode.removeAttribute("target");
});
某些较旧的浏览器不支持forEach()
上的NodeList
。在这种情况下使用Array.prototype.slice.call()
来实施forEach()
:
var images = Array.prototype.slice.call(document.querySelectorAll(selector));
images.forEach(function(el){
el.parentNode.removeAttribute("target");
});
答案 1 :(得分:1)
您调用的第一部分是一个简单的DOM查询,检索所有let array = await tensor.data()
for(let i = 0; i <array.length;i++) {
if (array[i]){
//do Something
};
};
元素,其alt属性与#34; Apple Store徽标&#34;相匹配。
<img>
这可以在vanilla JS中轻松完成:
$('img[alt="Apple Store Logo"]')
但是,document.querySelectorAll('img[alt="Apple Store Logo"]')
返回NodeList,而不是Array。我们可以通过调用它上的document.querySelectorAll
将NodeList转换为数组:
Array.prototype.slice
我对jQuery的了解很差,但我相信其余的方法会针对查询结果中返回的元素进行迭代调用。因此,假设意图是获取对Array.prototype.slice.call(document.querySelectorAll('img[alt="Apple Store Logo"]'))
元素的父元素的引用,并删除其img
属性,则整个代码块可以转换为:
target