gpt4 book ai didi

javascript - 如何像 jQuery 一样过滤普通 Javascript 中的元素?

转载 作者:行者123 更新时间:2023-12-01 01:40:19 26 4
gpt4 key购买 nike

例如,在 jQuery 中,如果我想要所有 <div><p>元素,我这样做:

var $x = $("p, div");

然后如果我想要所有的<div> x 中的元素,然后我这样做:

var $divs = $x.filter("div");

那么我该如何做这个简单的filter普通 JavaScript 中的东西?

例如,选择全部 <div><p> ,那么我可以这样做:

var x = document.querySelectorAll("div, p");

但是 vanilla JavaScript 没有像 jQuery 那样的过滤功能,所以我不能这样做:

var divs = x.filter("div"); // ERROR

希望有人能帮助我:-)

提前致谢。

更新

一些评论/答案建议执行诸如 .tagName == "DIV" 之类的操作来查找 div,但是,我想要一个像 jQuery 那样带有字符串选择器的解决方案。

原因是因为我还想用属性、类甚至用逗号放置的多个选择器进行过滤。并且字符串选择器必须是动态的。

这意味着,我不知道选择器中有什么。它可以是“div[foo='asd'], .bar”或“#hello, [xx='yy'], p”

所以我不能硬编码 .tagName == "DIV",因为我不知道选择器字符串中的内容。

最佳答案

您可以使用matches函数来检查 CSS 选择器是否与给定元素匹配。

var x = document.querySelectorAll("div, p");
var divs = [];

// Iterate through the elements that the first query selector matched
// (is a paragraph or a div tag)
for (var elem of x) {
// Check if the given element matches the second query selector
// (is a div tag)
if (elem.matches('div')) {
divs.push(elem);
}
}

可以使用以下方法更简洁地编写此代码(并且使用更现代的代码):

let x = document.querySelectorAll("div, p");
let divs = Array.from(x).filter(elem => elem.matches("div"));

关于javascript - 如何像 jQuery 一样过滤普通 Javascript 中的元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50592280/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com