jQuery中on()方法用法实例详解


Posted in Javascript onFebruary 06, 2015

本文实例分析了jQuery on()方法的用法。分享给大家供大家参考。具体分析如下:

一、jQuery on()方法的使用:
 
on(events,[selector],[data],fn)
 
events:一个或多个用空格分隔的事件类型和可选的命名空间,如"click"或"keydown.myPlugin" 。
selector:一个选择器字符串用于过滤器的触发事件的选择器元素的后代。如果选择器为null或省略,当它到达选定的元素,事件总是触发。
data:当一个事件被触发时要传递event.data给事件处理函数。
fn:该事件被触发时执行的函数。 false 值也可以做一个函数的简写,返回false。

二、jQuery on()方法的优点:
 
1、提供了一种统一绑定事件的方法

2、仍然提供了.delegate()的优点,当然如果需要你也可以直接用.bind()

三、与.bind(), .live(), .delegate()的比较:
 
1、其实.bind(), .live(), .delegate()都是通过.on()来实现的

bind: function( types, data, fn ) {

        return this.on( types, null, data, fn );

    },

    unbind: function( types, fn ) {

        return this.off( types, null, fn );

    },
    live: function( types, data, fn ) {

        jQuery( this.context ).on( types, this.selector, data, fn );

        return this;

    },

    die: function( types, fn ) {

        jQuery( this.context ).off( types, this.selector || "**", fn );

        return this;

    },
    delegate: function( selector, types, data, fn ) {

        return this.on( types, selector, data, fn );

    },

    undelegate: function( selector, types, fn ) {

        // ( namespace ) or ( selector, types [, fn] )

        return arguments.length === 1 ? this.off( selector, "**" ) : this.off( types, selector || "**", fn );

    }

2、用.bind()的代价是非常大的,它会把相同的一个事件处理程序hook到所有匹配的DOM元素上

3、不要再用.live()了,它已经不再被推荐了,而且还有许多问题

4、.delegate()会提供很好的方法来提高效率,同时我们可以添加一事件处理方法到动态添加的元素上。

5、我们可以用.on()来代替上述的3种方法

四、jQuery on()方法的使用示例

1、绑定click事件,使用off()方法移除on()所绑定的方法

$(document).ready(function(){

$("p").on("click",function(){

$(this).css("background-color","pink");

});

$("button").click(function(){

$("p").off("click");

});

});

2、多个事件绑定同一个函数

$(document).ready(function(){

  $("p").on("mouseover mouseout",function(){

    $("p").toggleClass("intro");

  });

});

3、多个事件绑定不同函数

$(document).ready(function(){

  $("p").on({

    mouseover:function(){$("body").css("background-color","lightgray");},  

    mouseout:function(){$("body").css("background-color","lightblue");}, 

    click:function(){$("body").css("background-color","yellow");}  

  });

});

4、绑定自定义事件

$(document).ready(function(){

  $("p").on("myOwnEvent", function(event, showName){

    $(this).text(showName + "! What a beautiful name!").show();

  });

  $("button").click(function(){

    $("p").trigger("myOwnEvent",["Anja"]);

  });

});

5、传递数据到函数

function handlerName(event) 

{

  alert(event.data.msg);

}
$(document).ready(function(){

  $("p").on("click", {msg: "You just clicked me!"}, handlerName)

});

6、适用于未创建的元素

$(document).ready(function(){

  $("div").on("click","p",function(){

    $(this).slideToggle();

  });

  $("button").click(function(){

    $("<p>This is a new paragraph.</p>").insertAfter("button");

  });

});

希望本文所述对大家的jQuery程序设计有所帮助。

Javascript 相关文章推荐
通过jquery实现tab标签浏览效果
Feb 20 Javascript
用jQuery中的ajax分页实现代码
Sep 20 Javascript
关于jquery性能最佳实践的讨论,与求教
Mar 30 Javascript
纯js网页画板(Graphics)类简介及实现代码
Dec 24 Javascript
手机端 HTML5使用photoswipe.js仿微信朋友圈图片放大效果
Aug 25 Javascript
JQ选择器_选择同类元素的第N个子元素的实现方法
Sep 08 Javascript
js实现复选框的全选和取消全选效果
Jan 03 Javascript
使用Node.js搭建静态资源服务详细教程
Aug 02 Javascript
jQuery实现的淡入淡出图片轮播效果示例
Aug 29 jQuery
小程序scroll-view安卓机隐藏横向滚动条的实现详解
May 16 Javascript
微信用户访问小程序的登录过程详解
Sep 20 Javascript
解决三元运算符 报错“SyntaxError: can''t assign to conditional expression”
Feb 12 Javascript
JS实现文字向下滚动完整实例
Feb 06 #Javascript
jquery中filter方法用法实例分析
Feb 06 #Javascript
Jquery对select的增、删、改、查操作
Feb 06 #Javascript
JavaScript常用的弹出广告及背投广告实现方法
Feb 06 #Javascript
js实现图片从左往右渐变切换效果的方法
Feb 06 #Javascript
js实现多选项切换导航菜单的方法
Feb 06 #Javascript
javascript实现多级联动下拉菜单的方法
Feb 06 #Javascript
You might like
Discuz 模板引擎的封装类代码
2008/07/18 PHP
jQuery获取json后使用zy_tmpl生成下拉菜单
2015/03/27 PHP
PHP版单点登陆实现方案的实例
2016/11/17 PHP
php 中的closure用法详解
2017/06/12 PHP
PHP模糊查询技术实例分析【附源码下载】
2019/03/07 PHP
jQuery select操作控制方法小结
2010/05/26 Javascript
jquery中eq和get的区别与使用方法
2011/04/14 Javascript
IE下写xml文件的两种方式(fso/saveAs)
2013/08/05 Javascript
20个实用的JavaScript技巧分享
2014/11/28 Javascript
原生js和jquery实现图片轮播淡入淡出效果
2015/04/23 Javascript
使用jspdf生成pdf报表
2015/07/03 Javascript
详解JavaScript ES6中的模板字符串
2015/07/28 Javascript
完美实现八种js焦点轮播图(上篇)
2016/07/18 Javascript
JavaScript关于提高网站性能的几点建议(一)
2016/07/24 Javascript
关于javascript中限定时间内防止按钮重复点击的思路详解
2016/08/16 Javascript
AngularJs directive详解及示例代码
2016/09/01 Javascript
JS处理数据四舍五入(tofixed与round的区别详解)
2017/10/26 Javascript
全新打包工具parcel零配置vue开发脚手架
2018/01/11 Javascript
layui lay-verify form表单自定义验证规则详解
2019/09/18 Javascript
在Layui中实现开关按钮的效果实例
2019/09/29 Javascript
python通过ElementTree操作XML获取结点读取属性美化XML
2013/12/02 Python
python采集百度百科的方法
2015/06/05 Python
Python使用sklearn库实现的各种分类算法简单应用小结
2019/07/04 Python
python web框架Flask实现图形验证码及验证码的动态刷新实例
2019/10/14 Python
python实现通过队列完成进程间的多任务功能示例
2019/10/28 Python
如何基于Python + requests实现发送HTTP请求
2020/01/13 Python
tensorflow实现将ckpt转pb文件的方法
2020/04/22 Python
如何在mac下配置python虚拟环境
2020/07/06 Python
详解python对象之间的交互
2020/09/29 Python
关于django python manage.py startapp 应用名出错异常原因解析
2020/12/15 Python
CSS实现雨滴动画效果的实例代码
2019/10/08 HTML / CSS
H5 meta小结(前端必看篇)
2016/08/24 HTML / CSS
2019史上最全Database工程师题库
2015/12/06 面试题
2014年生产管理工作总结
2014/12/23 职场文书
2015年简历自我评价范文
2015/03/11 职场文书
position:sticky 粘性定位的几种巧妙应用详解
2021/04/24 HTML / CSS