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 相关文章推荐
关于javascript 回调函数中变量作用域的讨论
Sep 11 Javascript
jQuery 操作下拉列表框实现代码
Feb 22 Javascript
addEventListener和attachEvent二者绑定的执行函数中的this不相同
Dec 09 Javascript
jquery Tab效果和动态加载的简单实例
Dec 11 Javascript
让jQuery与其他JavaScript库并存避免冲突的方法
Dec 23 Javascript
JQuery自适应窗口大小导航菜单附源码下载
Sep 01 Javascript
angularjs 源码解析之injector
Aug 22 Javascript
vue图片加载与显示默认图片实例代码
Mar 16 Javascript
AngularJS 购物车全选/取消全选功能的实现方法
Aug 14 Javascript
vue检测对象和数组的变化分析
Jun 30 Javascript
LayUi使用switch开关,动态的去控制它是否被启用的方法
Sep 21 Javascript
前端JS获取URL参数的4种方法总结
Apr 05 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
Windows2003 下 MySQL 数据库每天自动备份
2006/12/21 PHP
php输出表格的实现代码(修正版)
2010/12/29 PHP
Laravel中基于Artisan View扩展包创建及删除应用视图文件的方法
2016/10/08 PHP
详解PHP处理密码的几种方式
2016/11/30 PHP
javascript数组遍历for与for in区别详解
2014/12/04 Javascript
Grunt入门教程(自动任务运行器)
2015/08/06 Javascript
AngularJs页面筛选标签小功能
2016/08/01 Javascript
微信小程序 触控事件详细介绍
2016/10/17 Javascript
vue使用keep-alive实现数据缓存不刷新
2017/10/21 Javascript
深入学习JavaScript中的bom
2019/05/27 Javascript
结合axios对项目中的api请求进行封装操作
2020/09/21 Javascript
Openlayers实现地图的基本操作
2020/09/28 Javascript
[00:57]深扒TI7聊天轮盘语音出处5
2017/05/11 DOTA
[48:31]完美世界DOTA2联赛PWL S3 DLG vs Phoenix 第二场 12.17
2020/12/19 DOTA
python中sets模块的用法实例
2014/09/30 Python
详谈python在windows中的文件路径问题
2018/04/28 Python
python入门:这篇文章带你直接学会python
2018/09/14 Python
python使用wxpy实现微信消息防撤回脚本
2019/04/29 Python
详解pandas数据合并与重塑(pd.concat篇)
2019/07/09 Python
基于python的BP神经网络及异或实现过程解析
2019/09/30 Python
Python实现多线程下载脚本的示例代码
2020/04/03 Python
基于Tensorflow一维卷积用法详解
2020/05/22 Python
Python多分支if语句的使用
2020/09/03 Python
浅谈Python描述数据结构之KMP篇
2020/09/06 Python
如何从csv文件构建Tensorflow的数据集
2020/09/21 Python
python 基于opencv实现图像增强
2020/12/23 Python
英格兰橄榄球商店:England Rugby Store
2016/12/17 全球购物
马来西亚在线健康商店:Medipal Malaysia
2020/04/13 全球购物
南京某软件公司的.net面试题
2015/11/30 面试题
公益广告标语
2014/06/19 职场文书
爱国主义教育演讲稿
2014/08/26 职场文书
婚前协议书范本
2014/10/27 职场文书
乡镇防汛工作汇报
2014/10/28 职场文书
大学生自荐信怎么写
2015/03/26 职场文书
演讲稿之感恩老师(三篇范文)
2019/09/06 职场文书
vue动态绑定style样式
2022/04/20 Vue.js