Position Absolute

demystiveed jquery .live()以及为什么’通常比.bind()更快

Live()是一种奇怪的方法。大多数人使用它来将福彩3d布衣天下图绑定到加载页面中DOM中注入的选择器。它是它的魔力,但怎么样?

活动代表团和冒泡

背后的概念是非常巧妙的。基本上,JavaScript中有一个名为福彩3d布衣天下图冒泡的功能,当您单击HTML标记时,福彩3d布衣天下图将触发到其所有祖先,包括页面文档本身。什么.live()确实是从文件中绑定1个福彩3d布衣天下图,当您单击HTML标记时,它使用福彩3d布衣天下图冒泡并确定您单击的内容是否对应于您的Live选择器并相应地执行绑定功能。

然而,它有一个大缺点,如果您使用的福彩3d布衣天下图冒泡在2个选择器上,另一个祖先,将触发2个福彩3d布衣天下图。 jQuery将查看所有祖先并确定需要触发2个福彩3d布衣天下图。您可以理论上可以在祖先上使用返回错误来阻止传播,但这会阻止福彩3d布衣天下图冒泡。

在绑定大量选择器时,页面加载速度增益是巨大的

想象一下,您的Web应用程序在同一页面上具有40个编辑按钮,它将使用.live()比使用.bind()方法更快。特别是在加载页面上。请记住,Live只将一个福彩3d布衣天下图绑定到文档,并在页面加载中保持一致的速度,在那里您的.bind()福彩3d布衣天下图需要解析您的文档以绑定所有内容。所有浏览器都可以看到此增益,您拥有更多增益的选择越重要。

在页面加载中有40个选择器.live()比.bind()更快地超过500%。更令人惊讶的是,当您实际执行单击功能本身时,Live()也经常更快。然而,在IE中不可能测试这一点,因为它通常在1毫秒内发生。当超过5个选择器绑定时,总体上限为.live()更快。下面有一些测试你可以自己寻找自己,一个是使用Firebug分析,更精确。另一个具有JavaScript日期以进行所有浏览器测试。

测试是一致的

Firefox分析(使用Firebug)
1000+物品9项

查看演示 查看演示

遍布所有浏览器(使用警报和日期邮票)
1000+物品9项

查看演示 查看演示

下次你用jQuery绑定福彩3d布衣天下图问自己,如果.live()不会更好!

更多链接以满足您的好奇心:
jquery .live()文档
更多关于活动代表团
让我的好奇心拾起了.live()听 yayquery播客

广告

成为一个成功的开发人员 tesking 646-985. Web开发课程。下载 tesking 70-630. 演示和 tesking 352-001. 学习网络开发的最新工具和趋势的研究指南。