首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如果您通过ID在jQuery中选择一个元素,那么通过给它一个上下文还能提高速度吗?

如果您通过ID在jQuery中选择一个元素,那么通过给它一个上下文还能提高速度吗?
EN

Stack Overflow用户
提问于 2010-03-15 20:38:03
回答 3查看 192关注 0票数 7

想象一下这个简化的标记:

代码语言:javascript
复制
<div id="header">
   <!-- Other things.... -->
   <div id="detail">

   </div>
</div>

假设你已经有了下面的代码:

代码语言:javascript
复制
var $hdr = $("#header");

jQuery这样查找"detail“有速度上的区别吗?

代码语言:javascript
复制
var $detail = $("#detail", $hdr);

vs

代码语言:javascript
复制
var $detail = $("#detail");

因为详细信息是通过ID查找的?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-03-15 20:38:43

不,你没必要这么做。因为id在文档中是唯一的,所以不需要添加任何其他优化。

如果是我的话

代码语言:javascript
复制
var $detail = $("#detail");
票数 7
EN

Stack Overflow用户

发布于 2010-03-16 03:40:18

不是的。传递上下文实际上会使它变得更慢。下面给出了来自jQuery的相关源代码及其解释。

这段代码基本上是这样说的:

1.然后执行一些操作,如调用document.getElementById()

  • Otherwise计算上下文,然后运行

这是经过剥离的源代码..

代码语言:javascript
复制
init: function( selector, context ) {
    ...
    if ( typeof selector === "string" ) {
        ...
        // This gets ignored because we passed a context
        // document.getElementById() isn't called directly
        if ( match && (match[1] || !context) ) {
            ...
            } else {
                elem = document.getElementById( match[2] );
                ...
            }
        ...
        // Either this gets executed if a jQuery wrapped context was passed
        } else if ( !context || context.jquery ) {
            return (context || rootjQuery).find( selector );
        }
        // Or this gets executed, if a simple selector was passed as context
        } else {
            return jQuery( context ).find( selector );
        }
    ...
}

match是正则表达式的结果数组,用于确定选择器是HTML string还是id表达式。如果它是一个超文本标记语言字符串,那么match1将被填充。如果它是一个id (#someId),那么将填充match[2]

票数 6
EN

Stack Overflow用户

发布于 2010-03-16 05:10:27

答案在于ID是如何存储的。分配的in保存在类似散列的数据结构中。如果搜索一个完全限定的ID (不是id*="foo"),那么所需的定位时间应该在没有任何修饰符的情况下是最快的,因为它是一个直接的散列查找。

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

https://stackoverflow.com/questions/2447076

复制
相关文章

相似问题

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