首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >JQuery目录、sizzle和过滤器

JQuery目录、sizzle和过滤器
EN

Stack Overflow用户
提问于 2009-09-09 18:39:32
回答 1查看 2K关注 0票数 1

在调优性能时,当我在JQuery密集型页面上运行分析器时,我注意到这些JQuery函数需要大量的时间(按照这个顺序)

代码语言:javascript
运行
复制
dir (9.42%)
Sizzle (3.79%)
filter (3.79%)

我的jquery函数太大了,不能粘贴到这里。我能得到哪些JQuery函数在内部调用这些函数的指针吗?

另外,有没有办法使用IE8分析器(或任何其他方式)获取JS函数树,告诉我哪个JS函数调用了哪个JS函数?

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2009-09-09 18:45:57

jQuery的大部分内部都是私有的匿名函数。我不明白你怎么能分析这个。(我也试过了,但没有成功)。

Sizzle是支持jQuery的selector-engine。我怀疑Sizzle在查询DOM时使用了大量的filter(),使用了更复杂的选择器。

因此,至少这些函数调用是"ok“的,并按预期工作,并且在速度方面尽可能优化。

更新:

下面是dir()函数的实现:

代码语言:javascript
运行
复制
jQuery.dir = function( elem, dir ){
    var matched = [], cur = elem[dir];
    while ( cur && cur != document ) {
        if ( cur.nodeType == 1 )
            matched.push( cur );
        cur = cur[dir];
    }
    return matched;
};

nodeType %1是ELEMENT_NODEdir()函数过滤(或“清理”)给定查询的结果集,以确保只返回DOM元素,而不返回属性、文本节点等。(Weather dir()被执行,很可能是由Sizzle决定的)。

总结:

您不能跳过这些函数中的任何一个,因为它们是能够实际获得DOM中的任何内容的核心。(进行查询)。

每次查询DOM ( $("#something") )时,都会执行这些函数。对于简单的查询,可能只会执行三个函数中的一个或两个。这可能就是为什么调用次数会有变化的原因。

正如Chetan Sastry所指出的:缓存查询等可以获得很高的性能。看看this post中一些简洁的jQuery技巧吧。

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

https://stackoverflow.com/questions/1401339

复制
相关文章

相似问题

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