jquery中on绑定事件
之前项目中动态创建的标签元素 在绑定事件的时候 都是无效 无论如何都不能触发
eg:在页面加载完成之后 再由脚本动态创建的<div>元素 在绑定事件的时候 例如click事件
$("div").click(function(alert("aaa")){});
那么动态创建的元素是触发不了这个事件的
这是就要用到on来绑定事件了。
但是在W3C中并没有on事件 只有live,delegate 这是由于这里的更新很不及时 ,建议去http://www.runoob.com(菜鸟教程)学习,但是个人感觉 菜鸟上的小错误比较多。
on的定义和用法:
on() 方法在被选元素及子元素上添加一个或多个事件处理程序。
自 jQuery 版本 1.7 起,on() 方法是 bind()、live() 和 delegate() 方法的新的替代品。该方法给 API 带来很多便利,我们推荐使用该方法,它简化了 jQuery 代码库。
注意:使用 on() 方法添加的事件处理程序适用于当前及未来的元素(比如由脚本创建的新元素)。但是on事件是1.7之后新增加的 如果引用的是1.9之前的版本 还可以用live和delegate来绑定事件.
live事件在1.9之后被移除了。
自己尝试了一下 使用1.7之后的 给未来元素添加事件 使用on并不能触发。(放在下一篇进行解答)
提示:如需移除事件处理程序,请使用 off() 方法。所有off也是1.9之后出现的。
提示:如需添加只运行一次的事件然后移除,请使用 one() 方法。
另外附加下:click,bind(“click”),live,delegate的区别:
1、click()与bind()
1).click()
在jqeury事件处理API中,bind()是其API基础。click(),mouseover(),mousermove等来处理事件,真正起作用的是bind()。而这些方法都只是辅助作用(别名函数),简化使用。他们都只有一个参数(触发事件时执行的回调函数).
2).bind()
bind()能更好的控制事件处理函数中的处理过程,且它可以一次绑定多个事件(事件名作为第一个参数,多个事件用空格分开,eg:bind('click contains',function(){}) 鼠标左右点击事件 )
所有实用bind()或者click(),mouserover()绑定的事件都可以使用unbind()方法解除绑定
2、live()
与bind()作用基本一样。
最重要区别:live()可以将事件绑定到当前和将来的元素(eg:为id=zy元素绑定点击事件,而当你用js动态生成一个节点并插入到dom文档结构中时,如果你是用bind()绑定的,怎么新插入的节点将不会有该bind绑定事件。而live()则可以);
缺点: 无法用于链式结构。
eg: $('.class').live('click',function(){ }) 正确写法
$('.class').find('span').live('click',function(){ }) 错误写法 无效
live()绑定的事件可用 die()方法解除绑定。
3、delegate()
与live()作用基本一样,但是解决live缺点。它通过将选择器内的上下文作为第一个参数来解决live问题(也就是delegate得第一个参数你可以当作是一个选择元素所用)。
eg. $('.class').delegate('span','mouseover',fucntion(){ }) 为class为class的元素下的所有span标签绑定mouseover事件。
通过delegate()绑定的事件可通过undelegate()方法解除处理函数的绑定。
PS:bind,delegate,live都可以绑定多个事件,多个事件效果一样:
$("div").bind("click mouseout", function() {
$("#aa").after("<span>aaa </sapn>")
});
触发不同效果:
$("div").bind({
click:function(){alert(1)},
mouseout:function(){alert(2)}
});
jquery中on绑定事件的更多相关文章
- jquery-10 jquery中的绑定事件和解绑事件的方法是什么
jquery-10 jquery中的绑定事件和解绑事件的方法是什么 一.总结 一句话总结:bind(); unbind(); one(); 1. jquery中的绑定事件和解绑事件的方法是什么? bi ...
- Jquery中on绑定事件 点击一次 执行多次 的解决办法
举个例子,在同一个页面有下拉选择框 <select class="mySelect"> <option value="user">按用户 ...
- js便签笔记(6)——jQuery中的ready()事件为何需要那么多代码?
前言: ready()事件的应用,是大家再熟悉不过的了,学jQuery的第一步,最最常见的代码: jQuery(document).ready(function () { }); jQuery(fun ...
- Jquery中on绑定的一些小坑
---恢复内容开始--- 今天我们来说说关于JQuery中事件绑定中on绑定的一些小问题,直接上代码了,大家拷下去就可以用 <!DOCTYPE html> <html lang=&q ...
- 关于Jquery的delegate绑定事件无效
今天在做一个页面,用的是easyui页面有很多的tabs,里面都放了iframe 需要在load事件动态调整iframe高度 发现始终无法使用delegate来绑定load事件. 纠结了一下午发现了问 ...
- JQuery Mobile - 为什么绑定事件后会被多次执行?
JQuery Mobile 在绑定事件时候,发现会被多次执行,为什么啊? 原来,jquery click 不是替换原有的function ,而是接着添加,所以才会执行次数越来越多,怎么办才能按需实现 ...
- 2017年3月25日工作日志:Jquery使用小结[绑定事件判断、select标签、军官证正则]
jQuery获取DOM绑定事件 在1.8.0版本之前,我们要想获取某个DOM绑定的事件处理程序可以这样: $.data(domObj,'events');//或者$('selector').data( ...
- jQuery添加html绑定事件
jQuery添加html绑定事件 $("#xxx").on("click",".dev",function(){ });
- jquery中的DOM事件绑定与解绑
在jquery事件中有时候有的事件只需要在绑定后有效触发一次,当通过e.target判断触发条件有效触发后解除绑定事件,来避免多次无效触发和与未知情况造成冲突. 这时候就要用到了jquery中的事件绑 ...
随机推荐
- mysql更新密码
mysql -u root mysql> use mysql; mysql> UPDATE user SET Password = PASSWORD('newpass') WHERE us ...
- ionic ios iframe 白屏
之前碰到一个问题: 在ios下边使用iframe出现白屏问题 android下边正常 原因是ios对app打开外部网页有限制需要取消限制 解决方法 1.确认添加whitelist 插件 2.在conf ...
- IOS-Hybrid(混合开发)
http://www.cnblogs.com/oc-bowen/p/5423902.html 1.1. APP三种开发模式 智能手机之普及不用多说,手机APP渗投到各个行业:电商(淘宝.京东等 ...
- python面向对象一
1.1三种编程方法论 1.面向过程:把复杂的任务一步一步分解成简单的任务. 2.函数式编程:思想上接近于数学运算,根据某种方式,根据方式得出的结果. 3.面向对象编程:一种编程方式,需要使用" ...
- Scanner类
Scanner类:用于获取用户的键盘输入 成员方法: public boolean hasNextXxx():判断是否某种类型的元素 public Xxx nextXxx():获取该元素 常用方法: ...
- Swift中的类型转换
写在前面:1,类型转换的两种方式 2,as!和as?的用法 3,类型判断中 is和===的用法 类型转换方式一,利用类型的构造器进行转换 let str = " var i = Int(st ...
- hibernate+mysql的连接池配置
1:连接池的必知概念 首先,我们还是老套的讲讲连接池的基本概念,概念理解清楚了,我们也知道后面是怎么回事了. 以前我们程序连接数据库的时候,每一次连接数据库都要一个连接,用完后再释放.如果频繁的 ...
- 注解spring
================================================ 没有bean的话 也可以放到参数前面
- Maven之构件
定义 构件:在Maven中,任何依赖(jar包,tomcat等),或项目(自己打包的jar,war等)输出都可成为构件.每个构件都有自己的唯一标识(唯一坐标),由groupId,artifactId, ...
- shell脚本学习第一课
shell是一种程序设计语言,是访问操作系统内核的服务. Linux的shell种类常见的有: Bourne Shell(/usr/bin/sh或/bin/sh) Bourne Again Shell ...