作者:Devil灬旋律 | 来源:互联网 | 2023-01-29 20:57
HTML标记:
jQuery的:
$('div').each(function(){
$('#foo', this).dosmth(); // 1
$('#foo').dosmth(); // 2
});
运行dosmth哪种方法会更快?
解决方法:
由于我们得到了各种各样的答案,希望这里有一些清晰度(check the examples here):
>最快 – 没有必要循环.跳过$(“div”).每个部分只做$(“#foo”). foo是一个ID,因此查找是即时的.
>中等 – 循环中的$(“#foo”).请注意,您也不希望这样,因为它将为页面上的每个div执行该函数(因此,对于具有大量div的较大文档,这将是最慢的).
>最慢 – $(“#foo”,这个).上下文节点首先没有帮助,然后考虑jQuery将首先构建一个jQuery对象并将其转换为$(this).find(“#foo”).当然,这都是不必要的.
底线:在大多数情况下(例如,有时在确认ID在一个上下文而不是另一个上下文中时),ID查找不需要上下文节点.
以下是jQuery源代码中的一些资源:
> Handling for most of the cases here – 请注意$(“#id”)被挑选出来作为document.getElementById进行处理
> find
– 传递上下文时会发生什么