哪种方法可以更快地遍历DOM元素?

时间:2014-02-01 13:37:08

标签: jquery performance dom jquery-selectors dom-traversal

假设我有这样的标记:

    <div id="comment_box">
        <div class='comment'>
            <ul>
                <li class='comment_1'>
                    </li>
                <li class='comment_2'>
                    </li>
                <li class='comment_3'>
                    </li>
                <li class='comment_4'>
                    </li>
            </ul>
        </div>
    </div>

commentBox = $('#comment_box')

$('。comment_3',commentBox)或commentBox.find('。comment_3')还是其他更快的方式?

3 个答案:

答案 0 :(得分:2)

在使用JQuery选择元素时,我们需要记住以下几点:

1.选择选择器

选择好的选择器是提高JavaScript性能的一种方法。一点点特异性 - 例如,在按类名选择元素时包含元素类型 - 可以有很长的路要走。另一方面,太多的特异性可能是一件坏事。

选择器,例如

  

$('#comment_box .comment li.comment_3')有点矫枉过正,

如果选择器如

  

$('#comment_box li.comment_3')将完成工作。

jQuery提供了许多基于属性的选择器,允许使用简化的正则表达式基于任意属性的内容进行选择。

尽可能使用ID,类名和标记名称进行选择。

2.保存选择

jQuery不会为您缓存元素。如果您已经做出了可能需要再次进行的选择,则应将选择保存在变量中,而不是重复进行选择。

  

var commentBox = $('#comment_box');

在上面的示例中,变量名称以美元符号开头。与其他语言不同,JavaScript中的美元符号并没有什么特别之处 - 它只是另一个角色。这里,它用于表示变量包含jQuery对象。这种做法仅仅是惯例,并非强制性的。

一旦选择存储在变量中,就可以像调用原始选择一样调用变量上的jQuery方法。

选择仅在选择时获取页面上的元素。如果稍后将元素添加到页面中,则必须重复选择或以其他方式将它们添加到存储在变量中的选择。当DOM发生变化时,存储的选择不会神奇地更新。

您可以参考链接http://learn.jquery.com/using-jquery-core/selecting-elements/了解更多详情

答案 1 :(得分:1)

嗯,有各种方法。就我个人而言:

$("#comment_box .comment_3")

答案 2 :(得分:-1)

通常情况下,您越具体越好。例如:

$('#comment_box .comment li.comment_3')