假设DOM中没有重复的ID,$parent
是一个包含单个元素的jQuery对象,该元素是#myID
的父元素
var $el = $("#myID");
VS
var $el = $("#myID", $parent); //Faster or slower?
这两者之间是否存在速度差异?
答案 0 :(得分:3)
无论需要检查多少元素,查找都很快,因为浏览器使用哈希表进行ID查找,这些查找可以在O(1)
中执行查找。
指定上下文甚至可能会减慢速度,因为在初始查找之后需要检查以查找找到的元素是否是context元素的子元素 - 并且此检查很可能涉及迭代找到的元素的所有父元素直到根元素,以查看上下文是否是这些元素之一。现在采用不是单个元素的上下文,它将更加昂贵。
答案 1 :(得分:2)
在jQuery中按id选择时,指定上下文是否有速度优势?
不,它实际上会让事情变得更慢(或者至少,可以),因为jQuery有一个特殊的路径用于简单的ID选择器并使用document.getElementById
- 但前提是你不要给出一个背景。所以给出一个上下文会减慢速度(或者至少,可能减慢速度),因为jQuery将无法使用该快捷方式。相关检查位于当前未压缩的jQuery版本(v1.7.1)的第135行。