【发布时间】:2021-01-21 14:48:27
【问题描述】:
我了解到通过切换到 document.querySelectorAll() 而不是使用 jQuery 的本机选择器可以显着提高性能。
对于涉及数千个元素和嵌套循环等的实例,在 jQuery 中执行以下操作是否会带来任何性能优势?
//using querySelectorAll
elems = document.querySelectorAll('.element');
$(elems).addClass("className");
相对于做:
//traditional jQuery
elems = $(".element");
$(items).addClass("className");
如果没有,我们可以通过什么方式将document.querySelectorAll 合并到 jQuery 中?
【问题讨论】:
-
唯一的问题是,
querySelectorAll不返回 jQuery 对象的集合,因此没有.addClass()方法。Uncaught TypeError: document.querySelectorAll(...).addClass is not a function... 所以你也必须自己写。归根结底,您可以选择使用 jQuery 及其便捷方法的简单模式,或者完全摆脱 jQuery 的硬核性能模式。 -
您的第一个代码必须转换为
document.querySelectorAll('.element').forEach(ele => ele.classList.add('className')) -
@JeremyThille
$(elems)将其转换为具有.addClass()的jQuery 对象。 -
@trippyyyreddd 在你的第二个 sn-p 中,
$(items)应该是elems(不需要$(),因为它已经是一个 jQuery 对象)。 -
@JeremyThille 为了方便使用
.addClass()和.hide()等方法,而不必编写循环和条件。
标签: javascript jquery performance jquery-ui