什么是Javascript等效的jQuery代码

时间:2018-05-10 13:38:22

标签: javascript jquery

我正在开发一个项目,不允许使用jQuery。我正在寻找下面jquery的等效纯Javascript代码:

$('img[alt="Apple Store Logo"]').parent().removeAttr("target");

我找到了以下信息:

jQuery         Javascript
parent() :     .parentElement
removeAttr() : removeAttribute()

无法找到如何构建上面的选择器。

2 个答案:

答案 0 :(得分:4)

您可以使用querySelectorAll()获取与指定选择器匹配的NodeList。然后实现forEach()迭代所有元素以从元素的父节点中删除属性 parentNoderemoveAttribute()

尝试以下方法:

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