作者TonyQ (沉默是金。)
看板Ajax
标题Re: [问题] Jquery Find的效能
时间Thu Oct 21 23:43:03 2010
我的看法
※ 引述《scribeTW (scribe)》之铭言:
: ※ 引述《Futurend (未来)》之铭言:
: : 假如说我有一个div叫做 divContent
: : 我今天想要找一个input,我知道他在divContent下面
: : 那我有三种方法可以取得他
: : 1) $('#inputId');
: : 2) var $content = $('#divContent');
: : $content.find('#inputId');
: : 3) var $content = $('#divContent');
: : $('#inputId', $content');
2,3 是同一件事,差异只差一层 function call,差不到哪去。
1 应该最快,理由其他人说过了。
: : 後面两种方法的效能我猜测应该是优於第一种
: : 但2跟3这两个方法哪种效能比较好呢
: : 或着有其他更好的写法
: : 请前辈指点了
: 其实第1种是最快的。
: 理由是有ID值,jQuery直接就会用document.getElementById()取得,
: 这是浏览器原生函数,速度最快。
: 再来jQuery的原始码其实 $(expr, content) = $(content).find(expr),
: 不过前者其实还有经过许多判断,所以後者还比较快一些些。(少一些判断流程)
: 结论:1 > 2 > 3
1 > 2 =~ 3
: 另外推文提到的$('#divContent #inputId'),等同於
: $(document).find('#divContent #inputId')。
在 1.4.3 这个有机会比较快一点,因为可以直接走原生函式,
不过应该跟 2,3 相差不到哪去。
: ---
: 想知道真的是看jQuery释出的未压缩Development Source Code最快。
: 你会看到里面有很多注解。
--
我:一半的日子让你说,我听你说你的所有
______________________________________
______________________________________一半的日子我想说,对你说过去的所有:我
_______________________________________________________
在讨论中妥善扮演兼具聆听与分享的角色,是我们一生的课题。
_______________________________________________________
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 114.137.61.228
1F:推 s25g5d4:我想问..如果1.4.3真的改用querySelectorAll是否支援IE6 10/22 15:46
2F:→ grence:要怎麽要求十年前的浏览器支援现在的需求 10/22 19:40
3F:→ ileadu:还是很多人不愿换掉IE6 10/22 20:59
5F:→ TonyQ:我文章中有写啊,旧浏览器没support 就不会换,还是走旧的路 10/23 01:58
6F:→ TonyQ:它很多问题啦,看jQuery code 看到一堆 workaround ,像是他 10/23 01:59
7F:→ TonyQ:要element base ,跟在safari 时坐上有一点奇怪之类的。 10/23 01:59