jquery1.9 on()方法替代live()方法,用于给后来进入DOM中的html元素加处理事件。
来源:互联网 发布:谷歌访问助手 for mac 编辑:程序博客网 时间:2024/05/29 12:18
项目中经常会遇到需要从数据库动态获取数据,用js拼接Html元素来展示数据,此时会发现普通的事件不管用了,这就用到了jquery的$.live()事件,1.7版本以上已经用$.on()代替live();
// 这里的选择器selector用于指定可以触发事件的元素// 这里的选择器ancestor应是selector的祖辈元素,selector触发的事件可以被其祖辈元素在事件流中捕获,从而以"代理"的形式触发事件。// jQuery 1.0+ (1.4.3+支持参数data)$("selector").click( [ data ,] handler );// jQuery 1.0+ (1.4.3+支持参数data)$("selector").bind( "click" [, data ], handler );// jQuery 1.3+ (1.4+支持参数data)$("selector").live( "click" [, data ], handler );// jQuery 1.4.2+$("ancestor").delegate( "selector", "click" [, data ], handler );// jQuery 1.7+$("ancestor").on( "click", "selector" [, data ], handler );
根据jQuery的官方描述,live方法在1.7中已经不建议使用,在1.9中删除了这个方法。并建议在以后的代码中使用on方法来替代。
on方法可以接受三个参数:事件名、触发选择器、事件函数。
需要特别注意的是:on方法中间的这个触发选择器就是你将要添加的HTML元素的类名、id或者元素名,使用它就可以实现live的效果。
例如我的html文档中已经有了一个id为parent的div,我将要在这个div内部再动态添加一个class为son的span,然后我为这个span绑定一个事件,那么我需要这样写:
$('#parent').on('click','.son',function(){alert('test')});
这个触发选择器实际上就是在 JQ内部判断了一次事件参数的$(e.target).is(selector),只有触发对象匹配触发选择器才会触发。这是利用了事件冒泡的机制来完成 的,原本的live也是使用冒泡机制所以既然on可以实现那么live也就没有存在的必要了,只不过为了兼容让它从1.7苟延残喘的活到了1.9而已。
这篇文章也没啥内容了,接下来就用这个功能做点有意义的事情示范下吧~ 在低版本IE中A标签在鼠标按下时候会出现虚线边框,这是由focus造成的。我们只要在全局事件中做点手脚就能解决这个问题。在现代浏览器中focus是不冒泡的,但是低版本浏览器中可以冒泡。所以对于低版本浏览器中对focus使用live是有效的。在jQuery1.9之前的版本我们可以这样写:
$("a").live("focus",function(){ this.blur();});
jQuery1.9之后由于live被删除了,所以应该这样写:
$(document).on("focus","a",function(){ this.blur();});
还要注意个问题,如果是从live的写法换成on的写法别忘了调整调用链。因为live的返回值是事件触发的对象,而使用on则是在容器对象上。
//jQuery1.9-$("#panel").find("div").live("click",function(){ alert("x");}).addClass("x");//jQuery1.9+$("#panel").on("click","div",function(){ alert("x");}).find("div").addClass("x");
注意最后的find("div"),其它就没什么问题了。下面是官方说明
http://jquery.com/upgrade-guide/1.9/#live-removed
- jquery1.9 on()方法替代live()方法,用于给后来进入DOM中的html元素加处理事件。
- jquery1.9版本live方法变为on
- jQuery1.9+中删除了live以后的替代方法
- jQuery1.9+中删除了live以后的替代方法
- jQuery1.9+中删除了live以后的替代方法
- Jquery on()方法 替代live(),bind()绑定事件
- 给dom元素添加事件处理的两种方法
- jQuery的事件处理方法介绍 - bind(),live(),delegate(),on()
- jQuery的事件处理方法介绍 - bind(),live(),delegate(),on()
- jQuery1.9+去除live()后的替代
- jquery live方法替代
- jQuery使用on()方法给动态生成元素绑定事件
- jquery1.9移除了browser的替代方法
- JQuery1.8 判断元素是否绑定事件的方法
- jquery1.10给新增元素绑定事件
- jQuery的on()方法的两种用法(委托给父元素进行事件监听代理)
- jquery1.9以上 动态生成元素 live和on失效的解决方法
- jquery1.9以上 动态生成元素 live和on失效的解决方法
- Dreamweaver02——安装体验01——Dreamweaver CS6
- Android偏好设置及findPreferredActivity分析
- HTML的各个标签的默认样式
- Linux下安装node的问题
- 关于STM32应用触摸屏校准原理的总结
- jquery1.9 on()方法替代live()方法,用于给后来进入DOM中的html元素加处理事件。
- [Android] Dagger2 入门 1
- 安装wampserver时提示丢失MSVCR110.dll(在windows server上可用)
- 解决laravel5.2 分页缓存,缓存清理
- JavaScript笔记;函数的基本特性
- Giter8安装及使用教程
- 清华吴翼学长——ACM参赛故事
- Spring MVC @Transactional注解方式事务失效的解决办法
- Android XML布局文件解析过程源码解析