我刚刚读到这篇文章:http: //www.tvidesign.co.uk/blog/improve-your-jquery-25-excellent-tips.aspx
并对一些主张的技巧提出了一些问题:
9 - 为你的选择者提供一个背景:
使用上下文和使用更具体的选择器之间有什么区别?
而不是做
var selectedItem = $('#listItem' + i, $('.myList'));
Run Code Online (Sandbox Code Playgroud)
关于什么
var selectedItem = $('.myList>#listItem' + i);
Run Code Online (Sandbox Code Playgroud)
哪一个更快/更好,或者没有区别?
12 - 了解事件授权:
我认为在低处理程序计数时,事件委托比正常绑定慢.
您应该开始使用事件委派的时间是多少处理程序?
此外,在dom中使用委派和创建单击目标,让用户单击该单击目标,然后让单击目标找到要操作的元素之间的差异(在多快或如何'好'方面) .这种方法更快还是授权更快?
编辑:此外,您应该委派多少级别?委托10个级别的东西,或简单地绑定2个处理程序更好.
13 - 使用类来存储状态
14 - 更好的是,使用jQuery的内部数据()方法来存储状态:
为什么要使用数据与类?数据更快吗?我认为我通常会发现类更易于阅读,与博客条目中的内容相矛盾,因为我可以在DOM中看到它.
谢谢!
9 - 为您的选择器提供上下文:
Run Code Online (Sandbox Code Playgroud)var selectedItem = $('#listItem' + i, $('.myList'));速度/秒
Run Code Online (Sandbox Code Playgroud)var selectedItem = $('#listItem' + i);
根据该文章,第一个应该更快。但我不明白这怎么可能......
首先,通过 ID 访问是获取元素最快的方法之一。这只是从全局 ID-s 哈希表中进行查找。添加上下文不会增加速度。查找上下文应该需要一些额外的时间,因此第一个示例应该会更慢。
我也做了一些测量,发现第一个确实慢了很多倍。
至于这个:
Run Code Online (Sandbox Code Playgroud)var selectedItem = $('.myList>#listItem' + i);
这应该与第一个速度大致相同。根据我的测量,确实差不多,只是快了一点。
但是,在处理其他类型的选择器时,特别是重用它时,指定上下文可能会很有用,如下所示:
var ctx = selectedItem = $('.myList')
for (var i=0; i<1000; i++) {
var selectedItem = $('.listItem' + i, ctx);
}
Run Code Online (Sandbox Code Playgroud)
在这个例子中,它给你带来了相当大的速度提升。
就像与性能相关的其他所有事情一样 - 您必须先进行衡量,然后才能知道某些内容是否适用于您的特定情况。
当您应该开始使用事件委托时,有多少个处理程序?
当我感觉页面变慢的时候。99% 的情况下,普通事件处理程序就足够了。
| 归档时间: |
|
| 查看次数: |
351 次 |
| 最近记录: |