Web前端面试指导(二十五):谈一下Jquery中的bind,live,delegate,on的区别?

题目点评

该题难度不是很大,主要考察我们的叙述能力,对这些事件是否能够全面、系统的理解,以及表达的思路是否清晰。

解题思路

bind:把事件绑定到每一个匹配的元素上主要特点

1.兼容性比较

2.绑定事件到所有选出来的元素上

3.不会绑定事件到动态添加的那些元素上

4.当元素很多时,会出现效率问题特别是嵌套层次比较深的元素。


测验

html代码

<ul id="ul">
    <li>NO1</li>
    <li>NO2</li>
    <li>NO3</li>
    <li>NO4</li>
    <li>NO5</li>
</ul>

JavaScript代码

$("li").bind("click", function (event) {
    alert("OK");
});

jquery源码


调试数据


总结:需要循环5次绑定事件

live所有的事件都绑定到jquery对象$(document) ,主要特点:

1.事件只需要绑定一次,不需要绑定到筛选出来的元素

2.动态添加元素后依然拥有绑定事件

3.不能使用event.stopPropagation() 阻止事件的冒泡。



测验


JavaScript 代码

$("li").live("click", function (event) {
    alert("OK");
});

jquery源码同bind

调试数据


总结执行一次,事件绑定在根节点对象上。

delegate将事件绑定到指定的父元素上,和live类似但比较能活。主要特点:

1.可以用在动态添加的元素上

2.绑定的父元素可以采用就近原则,减少查询的次数,live的性能

3.live和delegate两者推荐使用delegate



测验


JavaScript代码

$("#ul").delegate("li", "click", function (event) {
    alert("OK");
});

调试数据


总结执行一次,事件绑定在调用对象上。

OnjQuery1.7新增的,前面的三种方法都是依赖on方法来实现的。,主要特点:

1.事件的添加卸载都要是通过on来实现的,提供一种统一事件处理方法。

2.增加了使用的难度,对于不熟悉on的使用的,很有可能就勿用,导致性能下降。

 

经验on方法的正确使用

1.使用on方法如果第二个参数使用null,作用bind( )相同;参考jquery1.7源码


2.如果第二个参数适用了选择器,就要看调用对象

i.如果调用对象$(document)作用与live( )相同,参考jquery1.7源码


ii.否则与delegate()相同,参考jquery1.7源码



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

智学无忧-老曹

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值