【发布时间】:2017-05-29 12:36:59
【问题描述】:
我正面临以下问题。
每次我必须使用querySelectorAll 和Element.classList 时,我都需要
- 将
Element.querySelectorAll返回的NodeList转换为数组 - 对数组执行 forEach 以分别操作每个项目。
jQuery 抽象了上述内容,所以我想开发一个辅助方法,类似于 jQuery 的工作方式,它的工作原理是这样的:
myhelper('.someClass').classList.add('newClass'); // there are more than 1 .someClass items
myhelper('#id').classList.remove('existingClass');
基本上myhelper(selector) 应该在底层抽象上面的点 1+2:从 querySelectorAll 中获取 NodeList,将其转换为数组,forEach 数组并 * 执行用户给出的方法。
PS:为简化起见,它可以用于一组特定的本地方法:例如 classList 方法和 textContent。
【问题讨论】:
-
你想用纯 JavaScript 实现 jQuery 的
addClass和removeClass方法,对吗? -
是的,但我想对 querySelectorAll 每次返回的 NodeList 进行抽象循环..
-
@Kaiido 这是我想在内部使用的东西,所以如果该方法不存在,它应该什么都不做或返回 false .. 我可以通过调用或仅使用 [... nodelist] 但我想完全隐藏循环
-
除了在新对象中递归地重写 Element 的所有属性之外,我没有看到其他方法。但是你仍然需要定义 getter 是如何工作的。例如,在您的
myhelper('.someClass').classList.add()中,如果您停在.classList会发生什么? -
好问题。我想我会选择一个更简单的解决方案!
标签: javascript jquery arrays selectors-api