Jquery 日记一:bing live delegate三个绑定事件操作的区别 !

$(document).bind("click",fn);
//或者
$(document).click(fn);

$('a').live('click', function() { alert("That tickles!") });
//最完美的live绑定如下:
//live方法还可以被绑定到具体的元素(或context)而不是document上,像这样
$('a', $('#container')[0]).live(...);

例子:执行上面例子的时候,直接给指定的document元素绑定了click事件,但是在unbind移除的时候出现了问题,把原有其他组件用live这种方式绑定的click事件也unbing的了(因为document有别的click事件).

原理如下,live事件是把要执行的函数function和参数a都绑定到document上,有事件冒泡到document上的时候会去判断是否有个事件叫click以及是否有一个参数叫a,这样才执行,所以$(document)unbind的时候会移除掉所有的click事件,这样会移除掉我们并不想移除掉的事件,多移除了事件!~


由此,衍生出来上面的问题后,我得到了这两个函数的区别并去尝试学习了一个新的函数delegate.

$('#container').delegate('a', 'click', function() { alert("That tickles!") });
别人总结得很好,我就照原话抄了,基本就是精确绑定到了元素上,原理看下面:

JQuery扫描文档查找$(‘#container’),并使用click事件和’a’这一CSS选择器作为参数把alert函数绑定到$(‘#container’)上。任何时候只要有事件冒泡到$(‘#container’)上,它就查看该事件是否是click事件,以及该事件的目标元素是否与CCS选择器相匹配。如果两种检查的结果都为真的话,它就执行函数。

这样子的话,三个函数的基本原理就阐述清楚了,但是这些方法在使用过程中的时候应关注一下几点:

1.事件冒泡.  e.preventDefault(); .stopPropagation(); 可以阻止事件冒泡

2.总结:bind把函数绑定元素的click事件上,live可以动态绑定(后面再加入一个同样的标签就可以),delegate和live一样可以绑定未来元素

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值