关于25个jquery提示的一些问题

Jou*_*key 5 jquery

我刚刚读到这篇文章: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中看到它.

谢谢!

Ren*_*soo 4

9 - 为您的选择器提供上下文:

var selectedItem = $('#listItem' + i, $('.myList'));
Run Code Online (Sandbox Code Playgroud)

速度/秒

var selectedItem = $('#listItem' + i);
Run Code Online (Sandbox Code Playgroud)

根据该文章,第一个应该更快。但我不明白这怎么可能......

首先,通过 ID 访问是获取元素最快的方法之一。这只是从全局 ID-s 哈希表中进行查找。添加上下文不会增加速度。查找上下文应该需要一些额外的时间,因此第一个示例应该会更慢。

我也做了一些测量,发现第一个确实慢了很多倍。

至于这个:

var selectedItem = $('.myList>#listItem' + i);
Run Code Online (Sandbox Code Playgroud)

这应该与第一个速度大致相同。根据我的测量,确实差不多,只是快了一点。

但是,在处理其他类型的选择器时,特别是重用它时,指定上下文可能会很有用,如下所示:

var ctx = selectedItem = $('.myList')
for (var i=0; i<1000; i++) {
    var selectedItem = $('.listItem' + i, ctx);
}
Run Code Online (Sandbox Code Playgroud)

在这个例子中,它给你带来了相当大的速度提升。

就像与性能相关的其他所有事情一样 - 您必须先进行衡量,然后才能知道某些内容是否适用于您的特定情况。

当您应该开始使用事件委托时,有多少个处理程序?

当我感觉页面变慢的时候。99% 的情况下,普通事件处理程序就足够了。