为了账号安全,请及时绑定邮箱和手机立即绑定

请问,为什么将事件绑定到列表时不使用on(),而是使用bind()?


现在一般不是使用on()比较多么?

//img4.sycdn.imooc.com/59e6211d0001382e15080682.jpg

正在回答

1 回答

bind(type,[data],fn),为每个匹配元素的特定事件绑定事件处理函数,是直接绑定在元素上.

优点:

    ①. 这个方法提供了一种在各种浏览器之间对事件处理的兼容性解决方案

    ②. .click(), .hover()等事件绑定,都是bind的一种简化处理方式

缺点:

①. 它会绑定事件到所有的选出来的元素上,当绑定的元素较多时(如:表格的每个单元格),会查找和遍历每个单元格,导致脚本执行速度明显变慢;且保存表格的多个单元格元素和相应的处理程序也会占用大量内存。简言之:绑定元素较多时,效率低下,占用内存。

②. bind只能给调用它的时候已经存在的元素绑定事件,不能给未来新增的元素绑定事件,即不能动态绑定到新增的元素上

③. 当页面加载完的时候,才可以进行bind()

解决:事件委托/事件代理

$(selector).on(events,[childSelector],[data],fn) ,在被选当前及未来的元素及子元素上添加一个或多个事件处理程序.

说明:

事件绑定与解绑一共有3组(bind、live、delegate),为了避免混乱,自 jQuery 版本 1.7 起,on() 方法是 bind()、live() 和 delegate() 方法的新的替代品。(推荐使用)


2 回复 有任何疑惑可以回复我~
#1

慕少2353462 提问者

非常感谢!
2017-10-23 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

请问,为什么将事件绑定到列表时不使用on(),而是使用bind()?

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信