live不是万能的
来源:互联网 发布:我的青春恋爱物语知乎 编辑:程序博客网 时间:2024/04/24 08:14
众所周知,jQuery 1.3版中有个很重要的功能是新增了live方法,这个方法可以为现在以及将来出现在页面上的元素绑定事件。
而这个live方法的原理是什么呢?
根据官网上live的文档上找到了这样一个地址
进去一看才知道,所谓神乎其神的方法,其实就是事件冒泡+e.target
跟我先前关于事件重复绑定的文章中的方案二如出一辙。进一步求证,查看jQuery源码,可以在2854行发现如下代码
- jQuery(document).bind( liveConvert(type, this.selector),
- this.selector, proxy );
这下就明白了,原来live其实就是给document绑定了事件处理函数,这样所有新增的元素的事件都能够冒泡到document上,实现了事件的动态委派的过程。这样极大得简化了本来需要自己管理的冒泡+e.target代码,都交由jQuery来管理了。
但这却会有一定的局限性:e.stopPropagation,对,聪明的你一定想到了,就是这个方法会失效。即使是普通的click的事件,想不让他冒泡都是不可能的。因为事件处理函数就是等事件冒泡到document上之后才触发的,此时再阻止冒泡已经为时已晚。所以,当遇到此类事情的时候,各位同学没办法……只能重复绑定或者用clone(true)咯……
live虽好,但不能乱用,视情况而定才是王道。
不过,幸运的是,e.preventDefault依然可以使用。所以可以说,在事件处理函数中,return false并没有完全废掉。
- live不是万能的
- C++不是万能的
- C++不是万能的
- C++不是万能的
- C++不是万能的
- C++不是万能的
- C++不是万能的
- C++不是万能的
- C++不是万能的
- C++不是万能的
- C++不是万能的
- C++不是万能的
- C++不是万能的
- C++不是万能的
- yum不是万能的
- C++不是万能的
- 技术不是万能的
- 容器不是万能的!
- 怎样才能充分利用SQL索引
- c#委托和事件
- 批量替換
- sql数据库修复技术
- C#的New关键字有几种用法
- live不是万能的
- Python例程:使用adodbapi访问MSSQL数据库
- Python例程:使用adodbapi存取二进制数据
- CSDN博客如何添加友情链接的方法
- 一则笑话
- 在Appengine中使用AMF通信
- Appengine中的JSON序列化
- 上下文绑定对象之一(定义)
- Windows运行命令集锦