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 相关文章推荐
潜说js对象和数组
May 25 Javascript
JavaScript基础篇(3)之Object、Function等引用类型
Nov 30 Javascript
深入理解Vue-cli搭建项目后的目录结构探秘
Jul 13 Javascript
基于Bootstrap的标签页组件及bootstrap-tab使用说明
Jul 25 Javascript
JavaScript中正则表达式判断匹配规则及常用方法
Aug 03 Javascript
jQuery实现轮播图及其原理详解
Apr 12 jQuery
vue 获取视频时长的实例代码
Aug 20 Javascript
JS实现点击下拉列表文本框中出现对应的网址,点击跳转按钮实现跳转
Nov 25 Javascript
js事件机制----捕获与冒泡机制实例分析
May 22 Javascript
vue 通过绑定事件获取当前行的id操作
Jul 27 Javascript
Vue项目配置跨域访问和代理proxy设置方式
Sep 08 Javascript
vue-element-admin项目导入和导出的实现
May 21 Vue.js
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
如何利用php+mysql保存和输出文件
2006/10/09 PHP
用PHP和Shell写Hadoop的MapReduce程序
2014/04/15 PHP
PHP+jQuery翻板抽奖功能实现
2015/10/19 PHP
基于php实现七牛抓取远程图片
2015/12/01 PHP
PHP模块化安装教程
2016/06/01 PHP
完美解决JS中汉字显示乱码问题(已解决)
2006/12/27 Javascript
tbody元素支持嵌套的注意方法
2007/03/24 Javascript
FireFox中textNode分片的问题
2007/04/10 Javascript
IE与Firefox在JavaScript上的7个不同写法小结
2009/09/14 Javascript
js局部刷新页面时间具体实现
2013/07/04 Javascript
浅谈javascript中this在事件中的应用
2015/02/15 Javascript
JavaScript中操作Mysql数据库实例
2015/04/02 Javascript
javascript判断数组内是否重复的方法
2015/04/21 Javascript
详解微信小程序 登录获取unionid
2017/06/27 Javascript
IScroll5实现下拉刷新上拉加载的功能实例
2017/08/11 Javascript
jQuery实现广告条滚动效果
2017/08/22 jQuery
详解使用vuex进行菜单管理
2017/12/21 Javascript
JS运动特效之完美运动框架实例分析
2018/01/24 Javascript
vue-cli 引入jQuery,Bootstrap,popper的方法
2018/09/03 jQuery
Layui实现数据表格中鼠标悬浮图片放大效果,离开时恢复原图的方法
2019/09/11 Javascript
Vue+Openlayers自定义轨迹动画
2020/09/24 Javascript
[02:15]2014DOTA2国际邀请赛 赛后退役选手回顾
2014/08/01 DOTA
Python使用dis模块把Python反编译为字节码的用法详解
2016/06/14 Python
python 通过字符串调用对象属性或方法的实例讲解
2018/04/21 Python
python基于http下载视频或音频
2018/06/20 Python
使用 Python 实现简单的 switch/case 语句的方法
2018/09/17 Python
python多线程semaphore实现线程数控制的示例
2020/08/10 Python
html5绘制时钟动画
2014/12/15 HTML / CSS
前端H5 Video常见使用场景简介
2020/08/21 HTML / CSS
大学生就业意向书范文
2014/04/01 职场文书
关于读书的演讲稿
2014/05/07 职场文书
升学宴演讲稿
2014/09/01 职场文书
纪念九一八事变演讲稿:青少年应树立远大理想
2014/09/14 职场文书
乡村教师党员四风问题对照检查材料思想汇报
2014/10/08 职场文书
不尊敬老师检讨书范文
2014/11/19 职场文书
八年级历史教学反思
2016/02/19 职场文书