javascript - jquery 到 Vanilla js; html标签的每个循环

标签 javascript jquery html arrays dom

所以这是我当前的 jquery 代码,我希望在 vanilla js 中使用它。

var elems = [];

$("*").not('script, style, iframe').each(function() {
    elems.push($(this)[0]);
});

我找到的最接近的替代方案是 document.getElementsByTagName("*") 但它仍然有 iframe、样式和脚本标记,我不希望它们出现在我的数组中。

另外,我不能只通过它们的标签名称来删除它们,因为它们可能有一个 ID 或一个与之关联的类。

最佳答案

一种选择是将 CSS 选择器与 .querySelectorAll() method 一起使用.

因为 CSS 有一个 :not() pseudo-class ,您可以使用它来否定 scriptstyleiframe 元素。

var elements = document.querySelectorAll('*:not(script):not(style):not(iframe');

在上面的代码片段中,elements 将是一个 NodeList包含所选元素的集合。

关于javascript - jquery 到 Vanilla js; html标签的每个循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41915959/

相关文章:

html - float div 和旁边的非 float div 的高度均为 100%

javascript - 我已经链接了 jquery 文件,但无法使用它

javascript - 从 facebook 获取用户电子邮件与 v2.8 中的 SDK java 脚本连接

没有事件项目的 jQuery Accordion 折叠

javascript - 获取多选的值(value) - 没有jQuery

javascript - 如何将 js 包含到 php/html 页面

javascript - 如何防止触发表单提交操作?

javascript - 将 PHP 的 MySQL 结果插入 JavaScript 数组

javascript - jQuery .hide() 我做错了什么

javascript - 当我在输入字段外单击时,不触发 blur()