首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JQuery-.children().children() vs .find()

JQuery-.children().children() vs .find()
EN

Stack Overflow用户
提问于 2014-01-27 20:02:10
回答 2查看 5.5K关注 0票数 1

我有一个场景,我知道我正在寻找的div是两个层次的深度。

是否更有效地使用:

代码语言:javascript
复制
$('#mydiv').find('.myselector')

代码语言:javascript
复制
$('#mydiv').children().children('.myselector')
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-01-27 20:13:37

使用您的控制台检查。首先检查一下你的第一个建议:

代码语言:javascript
复制
console.time('benchmark');
for (var i=0; i<1000; i++) {
  var $elem = $('#mydiv').find('.myselector');
}
console.timeEnd('benchmark');

现在,对您的第二个建议也这样做:

代码语言:javascript
复制
console.time('benchmark');
for (var i=0; i<1000; i++) {
  var $elem = $('#mydiv').children().children('.myselector');
}
console.timeEnd('benchmark');

运行两个版本几次,以检查是否存在显著差异。使用这种测试方法来优化您的选择器。

票数 7
EN

Stack Overflow用户

发布于 2014-01-27 20:08:27

试一试:

代码语言:javascript
复制
var elems = document.getElementById('mydiv').querySelectorAll(".myselector");

比较 of jQuery与我在香草JS上的一些想法相比较。

编辑:用于IE7支持:

代码语言:javascript
复制
var container = document.getElementById('mydiv'), elems = [],
    firstlevel = container.children, l = firstlevel.length,
    secondlevel, m, i, j;
for( i=0; i<l; i++) {
    secondlevel = firstlevel[i].children;
    m = secondlevel.length;
    for( j=0; j<m; j++) {
        if( secondlevel[j].className.match(/\bmyselector\b/)) {
            elems.push(secondlevel[j]);
        }
    }
}

..。是啊,不漂亮!但还是比jQuery快!

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21390494

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档