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实现控制台控件的代码
Sep 04 Javascript
用js实现的模拟jquery的animate自定义动画(2.5K)
Jul 20 Javascript
纯JavaScript实现HTML5 Canvas六种特效滤镜示例
Jun 28 Javascript
JavaScript中使用typeof运算符需要注意的几个坑
Nov 08 Javascript
JS实现霓虹灯文字效果的方法
Aug 06 Javascript
Jquery针对tr td的一些实用操作方法(必看篇)
Oct 05 Javascript
深入理解Node.js的HTTP模块
Oct 12 Javascript
Vue.js快速入门实例教程
Oct 15 Javascript
jQuery的Read()方法代替原生JS详解
Nov 08 Javascript
浅谈关于axios和session的一些事
Jul 13 Javascript
JS中的算法与数据结构之常见排序(Sort)算法详解
Aug 16 Javascript
JavaScript最完整的深浅拷贝实现方式详解
Feb 28 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
数据库查询记录php 多行多列显示
2009/08/15 PHP
php实现计算百度地图坐标之间距离的方法
2016/05/05 PHP
php设计模式之单例模式代码
2016/06/11 PHP
php.ini中date.timezone设置详解
2016/11/20 PHP
Laravel中的Blade模板引擎示例详解
2017/10/10 PHP
PHP类的自动加载机制实现方法分析
2019/01/10 PHP
Laravel 修改验证异常的响应格式实例代码详解
2020/05/25 PHP
Some tips of wmi scripting in jscript (1)
2007/04/03 Javascript
Knockoutjs的环境搭建教程
2012/11/26 Javascript
实现checkbox全选、反选、取消JavaScript小脚本异常
2014/04/10 Javascript
Javascript动态创建表格及删除行列的方法
2015/05/15 Javascript
jQuery 跨域访问解决原理案例详解
2016/07/09 Javascript
详解AngularJS中ng-src指令的使用
2016/09/07 Javascript
jQuery 实现倒计时天,时,分,秒功能
2018/07/31 jQuery
JavaScript十大取整方法实例教程
2020/12/03 Javascript
[01:09:40]Newbee vs Pain 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
Python subprocess模块学习总结
2014/03/13 Python
详解如何使用Python编写vim插件
2017/11/28 Python
Python 虚拟空间的使用代码详解
2019/06/10 Python
基于Python的Post请求数据爬取的方法详解
2019/06/14 Python
python原类、类的创建过程与方法详解
2019/07/19 Python
Python列表切片常用操作实例解析
2019/12/16 Python
Python3读写Excel文件(使用xlrd,xlsxwriter,openpyxl3种方式读写实例与优劣)
2020/02/13 Python
基于SQLAlchemy实现操作MySQL并执行原生sql语句
2020/06/10 Python
python eventlet绿化和patch原理
2020/11/21 Python
详解HTML5中的manifest缓存使用
2015/09/09 HTML / CSS
HTML里显示pdf、word、xls、ppt的方法示例
2020/04/14 HTML / CSS
美国领先的礼品卡网站:GiftCards.com
2016/11/02 全球购物
Tessabit美国:集世界奢侈品和设计师品牌的意大利精品买手店
2020/06/29 全球购物
购房委托书范本
2014/09/18 职场文书
四风问题个人剖析材料
2014/10/07 职场文书
关于颐和园的导游词
2015/01/30 职场文书
2015年英语教师工作总结
2015/05/20 职场文书
深入理解go缓存库freecache的使用
2022/02/15 Golang
「SHOW BY ROCK!!」“雫シークレットマインド”组合单曲MV公开
2022/03/21 日漫
MySQL详解进行JDBC编程与增删改查方法
2022/06/16 MySQL