之前项目中动态创建的标签元素  在绑定事件的时候  都是无效  无论如何都不能触发

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绑定事件的更多相关文章

  1. jquery-10 jquery中的绑定事件和解绑事件的方法是什么

    jquery-10 jquery中的绑定事件和解绑事件的方法是什么 一.总结 一句话总结:bind(); unbind(); one(); 1. jquery中的绑定事件和解绑事件的方法是什么? bi ...

  2. Jquery中on绑定事件 点击一次 执行多次 的解决办法

    举个例子,在同一个页面有下拉选择框 <select class="mySelect"> <option value="user">按用户 ...

  3. js便签笔记(6)——jQuery中的ready()事件为何需要那么多代码?

    前言: ready()事件的应用,是大家再熟悉不过的了,学jQuery的第一步,最最常见的代码: jQuery(document).ready(function () { }); jQuery(fun ...

  4. Jquery中on绑定的一些小坑

    ---恢复内容开始--- 今天我们来说说关于JQuery中事件绑定中on绑定的一些小问题,直接上代码了,大家拷下去就可以用 <!DOCTYPE html> <html lang=&q ...

  5. 关于Jquery的delegate绑定事件无效

    今天在做一个页面,用的是easyui页面有很多的tabs,里面都放了iframe 需要在load事件动态调整iframe高度 发现始终无法使用delegate来绑定load事件. 纠结了一下午发现了问 ...

  6. JQuery Mobile - 为什么绑定事件后会被多次执行?

    JQuery Mobile 在绑定事件时候,发现会被多次执行,为什么啊? 原来,jquery click  不是替换原有的function ,而是接着添加,所以才会执行次数越来越多,怎么办才能按需实现 ...

  7. 2017年3月25日工作日志:Jquery使用小结[绑定事件判断、select标签、军官证正则]

    jQuery获取DOM绑定事件 在1.8.0版本之前,我们要想获取某个DOM绑定的事件处理程序可以这样: $.data(domObj,'events');//或者$('selector').data( ...

  8. jQuery添加html绑定事件

    jQuery添加html绑定事件 $("#xxx").on("click",".dev",function(){ });

  9. jquery中的DOM事件绑定与解绑

    在jquery事件中有时候有的事件只需要在绑定后有效触发一次,当通过e.target判断触发条件有效触发后解除绑定事件,来避免多次无效触发和与未知情况造成冲突. 这时候就要用到了jquery中的事件绑 ...

随机推荐

  1. (转)gulp使用

    前端构建工具gulpjs的使用介绍及技巧 gulpjs是一个前端构建工具,与gruntjs相比,gulpjs无需写一大堆繁杂的配置参数,API也非常简单,学习起来很容易,而且gulpjs使用的是nod ...

  2. Javascript作用域研究(with)

    基本用法参考:http://www.cnblogs.com/silentjesse/p/4024536.html 这里说明以下with的用法: with语句 with语句主要用来临时扩展作用域链,将语 ...

  3. matlab 曲线拟合

    曲线拟合(转载:http://blog.sina.com.cn/s/blog_8e1548b80101c9iu.html) 补:拟合多项式输出为str 1.poly2str([p],'x') 2. f ...

  4. JS中的动态表格

    写法一:(有点啰嗦) //--------------XML DOM--------------------------------------function addTR(){ //1.取三个框的值 ...

  5. canvas.drawBitmap()频繁调用导致应用崩溃问题

    因为opengl不熟,要在opengl上面贴文字  时间紧所以用到一个折中的办法  文字转bitmap 因为文字较多,对话形式  还要分行,分段,逻辑处理的比较复杂     运行中会有闪退发生,且不可 ...

  6. 深夜用git真是醉了

    t吐槽一下那些 感觉命令行高效的傻逼们 我只想吃个牛肉串  你让我先学会宰牛? 命令不是对底层代码的封装? 程序的终极奥义就是把很多复杂的东西,封装到一个按钮就能完成 .叫做简为美. 浪费别人的时间等 ...

  7. MySQL安装与设置

    下载zip,配置 1,系统变量添加:...\mysql-5.7.10-winx64,环境变量添加:%MYSQL_HOME%\bin 2,修改MySQL.ini basedir=(同系统变量路径) da ...

  8. Sybase 常用SQL

    http://blog.chinaunix.net/uid-200142-id-3073894.html ===========================使用总结================ ...

  9. Quartz 学习记录1

    原因 公司有一些批量定时任务可能需要在夜间执行,用的是quartz和spring batch两个框架.quartz是个定时任务框架,spring batch是个批处理框架. 虽然我自己的小玩意儿平时不 ...

  10. showPrompt弹框提示

    工作中会有很多的弹框,用来添加模板,用来信息提示,,我现在用的模板有dialog(用来添加数据模板内容),还有一个就是自写的showPrompt用来判断错误或者正确的信息~~ 样子大概就是这样的,, ...