具有查找功能的ID与Var

时间:2013-07-08 16:00:14

标签: jquery

更快

 <div class="box"><div id="inside"></div></div>

 jquery 

  var div_obox = $('.box');
  var div_Ibox = div_obox.find("#inside") or var div_Ibox = $("#inside");

只是急于知道哪个更快我知道使用ID是最快的,但是即使使用变量也要快得多。

我期待它,因为它已在第一个语句中找到.box元素,因此浏览器可以使用#inside函数轻松找到find元素。正如我们指定的那样,它存在于.box内,如果我在这里使用id,我想它需要从头再次开始搜索过程。让我通过find函数知道Id与var。谢谢

3 个答案:

答案 0 :(得分:1)

$("#inside")div_obox.find("#inside")快于$('.box > #inside'),因为在第一种情况下,jQuery可以并且确实使用document.getElementById,并且所有浏览器都在id之间保持直接映射和相关的元素。

来自源代码:

    // Shortcuts
    if ( (match = rquickExpr.exec( selector )) ) {
        // Speed-up: Sizzle("#ID")
        if ( (m = match[1]) ) {
            if ( nodeType === 9 ) {
                elem = context.getElementById( m );

如果没有逻辑原因(即检查DOM中特定部分中存在的元素),切勿向'#id'选择器添加任何内容。

答案 1 :(得分:1)

我会跑一些测试......

但我相信所有元素都是通过网页上的ID来编制索引,因此$('#inside')$('.box > #inside')会比$('.box').find('#inside')快得多

答案 2 :(得分:1)

我相信直接 ID $("#inside")将永远是最快,因为DOM上的所有内容都以唯一ID为索引。

相关问题