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类和继承 prototype属性
Sep 03 Javascript
多个js与css文件的合并方法详细说明
Dec 26 Javascript
jQuery+css+html实现页面遮罩弹出框
Mar 21 Javascript
jQuery选择器中含有空格的使用示例及注意事项
Aug 25 Javascript
原创jQuery弹出层插件分享
Apr 02 Javascript
jquery操作angularjs对象
Jun 26 Javascript
详解maxlength属性在textarea里奇怪的表现
Dec 27 Javascript
JavaScript自定义函数实现查找两个字符串最长公共子串的方法
Nov 24 Javascript
HTML的select控件美化
Mar 27 Javascript
使用 Node.js 对文本内容分词和关键词抽取
May 27 Javascript
Vue Ajax跨域请求实例详解
Jun 20 Javascript
关于layui的动态图标不显示的解决方法
Sep 04 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
深入解析yii权限分级式访问控制的实现(非RBAC法)
2013/06/13 PHP
PHP内核探索之解释器的执行过程
2015/12/22 PHP
使用一个for循环将N*N的二维数组的所有值置1实现方法
2017/05/29 PHP
postman的安装与使用方法(模拟Get和Post请求)
2018/08/06 PHP
PHP基于面向对象封装的分页类示例
2019/03/15 PHP
jquery提升性能最佳实践小结
2010/12/06 Javascript
js网页版计算器的简单实现
2013/07/02 Javascript
脚本合并提升javascript性能示例
2014/02/24 Javascript
JavaScript生成随机数的4种自定义函数分享
2015/02/28 Javascript
基于javascript实现彩票随机数生成(简单版)
2020/04/17 Javascript
JavaScript实现复制内容到粘贴板代码
2016/03/31 Javascript
基于BootStrap环境写jQuery tabs插件
2016/07/12 Javascript
javascript 日期相减-在线教程(附代码)
2017/08/17 Javascript
Vue2.0基于vue-cli+webpack父子组件通信(实例讲解)
2017/09/14 Javascript
Javascript 实现 Excel 导入生成图表功能
2018/10/22 Javascript
vue 解决兄弟组件、跨组件深层次的通信操作
2020/07/27 Javascript
elementui实现预览图片组件二次封装
2020/12/29 Javascript
vue打开新窗口并实现传参的图文实例
2021/03/04 Vue.js
Python使用redis pool的一种单例实现方式
2016/04/16 Python
简单的Python调度器Schedule详解
2019/08/30 Python
Python sys模块常用方法解析
2020/02/20 Python
python deque模块简单使用代码实例
2020/03/12 Python
keras实现多种分类网络的方式
2020/06/11 Python
Python enumerate() 函数如何实现索引功能
2020/06/29 Python
HTML5中的音频和视频媒体播放元素小结
2016/01/29 HTML / CSS
印尼最大的在线购物网站:MatahariMall.com
2016/08/26 全球购物
美国50岁以上单身人士约会平台:SilverSingles
2018/06/29 全球购物
Amara德国:家居饰品、设计师品牌和豪华礼品
2019/05/20 全球购物
最畅销的视频游戏享受高达90%的折扣:CDKeys
2020/02/10 全球购物
C&A巴西网上商店:时尚、衣服、手机和鞋子
2020/06/07 全球购物
食品质量与安全专业毕业生求职信
2014/08/11 职场文书
群众路线组织生活会发言材料
2014/10/17 职场文书
学期个人工作总结
2015/02/13 职场文书
认真学习保证书
2015/02/26 职场文书
2015年度个人思想工作总结
2015/04/08 职场文书
2016春季运动会通讯稿
2015/07/18 职场文书