javascript - 降低 Javascript 中 DOM 搜索频率

标签 javascript jquery performance dom find

我正在从一个小项目中删除 Jquery 并使用 vanilla js 重写脚本。在当前代码中,有一个 jquery 实现来搜索 DOM 元素,然后使用 jquery 'find' 来搜索元素内的特定元素。

var ImageCapture ={
    cacheDom : function(){
        this.form = $('#drawingBoard');
        this.saveBtn = this.form.find('#saveBtn');
        this.image = this.form.find('#image');
        this.results = this.form.find('#results');
    }
}

我已将上面的 Jquery 代码转换为 vanilla js,如下所示。

var ImageCapture ={
        cacheDom: function () {
            this.form = document.getElementById('drawingBoard');
            this.saveBtn = this.form.querySelector('#saveBtn');
            this.image = this.form.querySelector('#image');
            this.results = this.form.querySelector('#results');
        }
    }

新的实现似乎工作正常,但我想确定这是否是使用 vanilla JS 替换 Jquery 实现的正确方法?

提前致谢。

最佳答案

我制作了两个 jsfiddles 来向您展示普通 js querySelectorAll 和 jQuery 选择器之间行为上的细微差别。您自然会期望它们表现相同,但事实并非如此。

这是纯js版本:https://jsfiddle.net/a81e2do3/

这是 jQuery:https://jsfiddle.net/a81e2do3/1/

简而言之,如果你有这个 html:

div#a > div#b > div#c

如果你有一个 #b 的普通 JS 元素节点对象,你可以执行 b.querySelector('#a #c') 并成功选择 div#c,但你不能在jQuery(在我看来,jQuery 方式更有意义)。

关于javascript - 降低 Javascript 中 DOM 搜索频率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47037051/

相关文章:

c++ - 将 Python 翻译成 C++ : lists and tuples

c++ - constexpr vs 重复函数调用性能

javascript - Angular 定义 Controller

javascript - 使用 pixi.js 进行适当的文本缩放?

javascript - 某些 Android 设备中在线流媒体播放的音频编码问题

jquery - 我想在向下滚动期间修复 <div>

javascript - Bootstrap 下拉菜单不折叠菜单

jquery - jQuery 中的鼠标滚轮问题

javascript - 响应式菜单 (mmenu) 导致高 CLS

javascript - 如何调用对象内部的函数