jQuery中的bind()、live()的区别与使用

原文地址:http://www.cnblogs.com/mrjungle-home/p/jungle_chang.html

使用jquery有一段时间了,刚开始看别人的源代码的时候对事件的绑定方法有疑惑。比如:


这就绑定了一个click事件。

1.bind()方法解析

但后来发现jqueryAPI里面还有bind方法,一直没有使用过,查看API的使用方法:

$("p").bind("click", function(){
  alert( $(this).text() );
});

同时绑定多个事件类型

$('#foo').bind('mouseenter mouseleave', function() {
  $(this).toggleClass('entered');
});

注意:事件类型名称用空格隔开,使用场景:多个事件类型做同一个动作时使用。

相对于直接注册事件,bind()方法可以绑定多个事件,相同之处是都是绑定在目标对象上面,这个方法是存在最久的,而且也很好的解决了浏览器在事件处理中的兼容问题

注意如果父层有绑定事件的情况下,需要阻止一下冒泡,e.stopPropagation()和e.cancellBubble().

2.live()方法解析

使用情况如下:

$('#foo').live('click', function() {
  $(this).toggleClass('entered');
});//.live()方法用到了事件委托的概念来处理事件的绑定。

live()方法用到了事件委托的概念来处理事件的绑定。它和用.bind()来绑定事件是一样的。区别之处在于:

live()总是找到事件对象(event.target)的顶级元素(document),并在document节点上进行事件绑定,通过事件冒泡的机制进行事件委派,使用时只需要定义一次,可以满足所有符合要求的事件对象,使用环境是多个对象做同一个类型的事情的时候,比如要让所有的元素弹出自己的ID 代码如下:

<div id="parent">
            <div id="son">
                <div id="grandson">
                    fffffffff
                </div>
            </div>          
 </div>

我们现在要让三个div都要弹出自己的ID

JS代码如下:

$("#parent").live("click",function(){
     alert($(this).id);     
})  


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值