jQuery选择器性能-一条语句与两条语句

jQuery选择器性能-一条语句与两条语句,jquery,Jquery,使用两个单独的调用来隐藏两个元素之间是否存在性能差异,或者仅使用一条语句是否更高效?有实际的区别吗 $('#container1').hide(); $('#container2').hide(); vs: 另外,你认为哪一个更具可读性 从效率的角度看,这无关紧要。如果不需要将单独的事件附加到其中一个元素上,我认为第二个选项的可读性更好:$('#containter1').hide().html('foo')…而不是另一个元素。有一个小的性能差异,在这两个元素上调用相同的委托,但这是一个非常非

使用两个单独的调用来隐藏两个元素之间是否存在性能差异,或者仅使用一条语句是否更高效?有实际的区别吗

$('#container1').hide();
$('#container2').hide();
vs:


另外,你认为哪一个更具可读性

从效率的角度看,这无关紧要。如果不需要将单独的事件附加到其中一个元素上,我认为第二个选项的可读性更好:
$('#containter1').hide().html('foo')…而不是另一个元素。

有一个小的性能差异,在这两个元素上调用相同的委托,但这是一个非常非常小的内存分配。任何额外的代码行也意味着javascript解释器和浏览器需要做更多的工作……这比任何事情都重要,但仍然是一个无穷小的区别


简短回答:第二个稍微快一点/使用更少的内存,它是如此的微不足道,如果不循环数万次,你可能无法测量

在这种特殊情况下,它不会产生实际的影响。您仍在DOM中查找两个特定id

就可读性而言,我会将它们保存在一个语句中,只要它们是逻辑分组的

但是,如果您的下一行是在container2上单独运行的,则将container2分开。无需进行额外的遍历。例如:

//2 dom traversals
$('#container1').hide();
$('#container2').hide().html(some_html);
快于

//3 dom traversals
$('#container1, #container2').hide();
$('#container2').html(some_html);

两者基本相同,第二个字符要短一些,如果这对您来说很重要的话。

在这种情况下这没关系。谢谢大家的回复,非常有用。@Nick-出于好奇,这两个字符都会导致两次DOM遍历吗,或者第二个版本会在一次遍历中同时完成这两个任务吗?@patrick-这两个版本都有两个“遍历”,但在使用
#ID
选择器时,这不是一个好术语,在这种情况下,您要求浏览器直接返回元素(通常从内部哈希表返回,这就是它如此快速的原因)。您正在调用一个方法,获取一个元素……因此,在使用ID时,您没有进行任何遍历/爬网/搜索。当使用多个选择器时,Sizzle只是将它们逐个提取,并将它们添加到集合中(当然,在可能的情况下,对提取ID元素进行优化),两者的工作量相同。非常感谢您的解释。我一直想知道元素是如何获得的。不知何故,我认为选择需要完整的DOM遍历。很高兴听到事实并非如此。再次感谢!!!
//3 dom traversals
$('#container1, #container2').hide();
$('#container2').html(some_html);