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与google map api结合使用 控件,监听器
Mar 04 Javascript
javascript学习笔记(三) String 字符串类型介绍
Jun 19 Javascript
关于jquery ajax 调用带参数的webservice返回XML数据一个小细节
Jul 31 Javascript
JS 去除Array中的null值示例代码
Nov 20 Javascript
浅谈javascript属性onresize
Apr 20 Javascript
基于jQuery实现的扇形定时器附源码下载
Oct 20 Javascript
解决jquery无法找到其他父级子集问题的方法
May 10 Javascript
基于Bootstrap的UI扩展 StyleBootstrap
Jun 17 Javascript
Vue精简版风格概述
Jan 30 Javascript
JS实现压缩上传图片base64长度功能
Dec 03 Javascript
Vue快速实现通用表单验证的方法
Feb 24 Javascript
Vue状态模式实现窗口停靠功能(灵动、自由, 管理后台Admin界面)
Mar 06 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
先进的自动咖啡技术,真的可以取代咖啡师吗?
2021/03/06 冲泡冲煮
smtp邮件发送一例
2006/10/09 PHP
php设计模式 Chain Of Responsibility (职责链模式)
2011/06/26 PHP
php中将时间差转换为字符串提示的实现代码
2011/08/08 PHP
深入理解ob_flush和flush的区别(ob_flush()与flush()使用方法)
2013/02/06 PHP
PHP图片自动裁切应付不同尺寸的显示
2014/10/16 PHP
php正则去除网页中所有的html,js,css,注释的实现方法
2016/11/03 PHP
jquery蒙版控件实现代码
2010/12/08 Javascript
js文件缓存之版本管理详解
2013/07/05 Javascript
javascript alert乱码的解决方法
2013/11/05 Javascript
JS中操作JSON总结
2020/12/06 Javascript
Three.js学习之正交投影照相机
2016/08/01 Javascript
nodeJs内存泄漏问题详解
2016/09/05 NodeJs
微信小程序 商城开发(ecshop )简单实例
2017/04/07 Javascript
Windows下使用Nodejs运行js的方法
2017/09/02 NodeJs
JavaScript实现正则去除a标签并保留内容的方法【测试可用】
2018/07/18 Javascript
微信开发之微信jssdk录音功能开发示例
2018/10/22 Javascript
vue插件draggable实现拖拽移动图片顺序
2018/12/01 Javascript
详解nodejs解压版安装和配置(带有搭建前端项目脚手架)
2018/12/06 NodeJs
Vue页面手动刷新,实现导航栏激活项还原到初始状态
2020/08/06 Javascript
python中正则表达式的使用详解
2014/10/17 Python
python实现将英文单词表示的数字转换成阿拉伯数字的方法
2015/07/02 Python
Python压缩解压缩zip文件及破解zip文件密码的方法
2015/11/04 Python
Python多进程原理与用法分析
2018/08/21 Python
Numpy截取指定范围内的数据方法
2018/11/14 Python
Python二叉树的镜像转换实现方法示例
2019/03/06 Python
Python matplotlib学习笔记之坐标轴范围
2019/06/28 Python
python使用多线程编写tcp客户端程序
2019/09/02 Python
Python实现线性插值和三次样条插值的示例代码
2019/11/13 Python
python获取array中指定元素的示例
2019/11/26 Python
Python生成个性签名图片获取GUI过程解析
2019/12/16 Python
德国2018年度最佳在线药房:Bodfeld Apotheke
2019/11/04 全球购物
初级会计求职信范文
2014/02/15 职场文书
银行求职自荐信
2014/06/30 职场文书
Python中可变和不可变对象的深入讲解
2021/08/02 Python
nginx配置限速限流基于内置模块
2022/05/02 Servers