1

哪个更快

 <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在这里使用,我想它需要重新从头开始搜索过程。让我知道 Id 与 var 与 find 功能。谢谢

4

3 回答 3

1

$("#inside")div_obox.find("#inside")比jQuery更快,$('.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 );

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

于 2013-07-08T16:02:26.183 回答
1

我只是进行一些测试...

但我相信所有元素都由页面上的 id 索引,因此$('#inside')或者$('.box > #inside')会比$('.box').find('#inside')

于 2013-07-08T16:02:38.457 回答
1

我相信直接ID$("#inside")始终是最快的,因为所有DOM内容都由唯一 ID 索引。

于 2013-07-08T16:04:07.263 回答