栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

向页面添加复杂元素时的事件委托与直接绑定

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

向页面添加复杂元素时的事件委托与直接绑定

使用绑定事件时,将创建较少的CPU开销,

$(<root-element>).on(<event>,<selector>)
因为将绑定到单个“根”元素,而不是绑定到更多的单个后代元素(每个绑定都需要时间…)。

话虽如此,当实际事件发生时,您将招致更多的CPU开销,因为它们必须使DOM膨胀到“ root”元素。

简短的故事: 绑定 事件处理程序 时,委托可以节省CPU ; 事件触发时 (例如,用户单击某些东西),bind可以节省CPU 。

因此,由您决定哪个点对性能更重要。添加新元素时,您是否有可用的CPU?如果是这样,则直接绑定到新元素将是整体性能最佳的选择,但是如果添加元素是占用大量CPU的操作,则您可能需要委派事件绑定,并让事件触发从所有冒泡事件中产生一些额外的CPU开销。

注意:

$(<root-element>).on(<event>, <selector>, <event-handler>)

是相同的:

$(<root-element>).delegate(<selector>, <event>, <event-handler>)

然后:

$(<selector>).on(<event>, <event-handler>)

是相同的:

$(<selector>).bind(<event>, <event-handler>)

.on()
是jQuery 1.7中的新增功能,如果您使用的是1.7+,则
.delegate(<selector>, <event>, <event-handler>)
仅仅是的捷径
.on(<event>, <selector>, <event-handler>)

更新

这是一个性能测试,表明委派事件绑定比单独绑定到每个元素要快: http :
//jsperf.com/bind-vs-click/29。
遗憾的是,此性能测试已被删除。

更新

这是一个性能测试,显示当您直接绑定到元素而不是委托绑定时,事件触发会更快:http : //jsperf.com/jquery-delegate-vs-bind-
triggering(请注意,这不是完美的性能测试,因为绑定方法已包含在测试中,但由于

delegate
绑定时运行速度更快,这仅意味着
bind
在谈论触发时相对而言甚至更快)



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/432410.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号