【发布时间】:2018-11-08 13:50:36
【问题描述】:
例如,在 jQuery 中,如果我想要所有 <div> 和 <p> 元素,我这样做:
var $x = $("p, div");
然后,如果我想要 x 中的所有 <div> 元素,那么我这样做:
var $divs = $x.filter("div");
那么我该如何在原生 JavaScript 中完成这个简单的 filter 事情呢?
例如,要选择所有<div>和<p>,那么我可以这样做:
var x = document.querySelectorAll("div, p");
但是 vanilla JavaScript 没有 jQuery 那样的过滤功能,所以我不能这样做:
var divs = x.filter("div"); // ERROR
希望有人可以帮助我:-)
提前致谢。
更新
一些 cmets/answers 建议执行类似 .tagName == "DIV" 的操作来查找 div,但是,我想要一个带有字符串选择器的解决方案,例如 jQuery。
原因是因为我还想使用属性、类甚至多个选择器进行过滤,您可以在其中输入逗号。并且字符串选择器必须是动态的。
这意味着,我不知道选择器中的内容。它可以是 "div[foo='asd'], .bar" 或 "#hello, [xx='yy'], p"
所以我不能硬编码 .tagName == "DIV",因为我不知道选择器字符串中的内容。
【问题讨论】:
-
我不是 100% 确定,但我认为你可以这样做
[anyDomElement].GetElementsByTagName("div") -
你打开jQuery核心代码看了一下
.filter()方法吗? -
为什么不写一个看起来像第一个代码sn-p但实际上是第二个的包装器?
-
没有“原生”JavaScript 之类的东西......它通常被称为“香草”或 ECMA6 脚本。
-
@MartinZeitler 所以你的意思是ECMAScript ;)
标签: javascript jquery