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 相关文章推荐
7个让JavaScript变得更好的注意事项
Jan 28 Javascript
jQuery+css实现炫目的动态块漂移效果
Jan 28 Javascript
JS随机洗牌算法之数组随机排序
Mar 23 Javascript
window.onload绑定多个事件的两种解决方案
May 15 Javascript
JQuery遍历元素的后代和同胞实现方法
Sep 18 Javascript
mpvue写一个CPASS小程序的示例
Sep 04 Javascript
Vue.js 中 axios 跨域访问错误问题及解决方法
Nov 21 Javascript
Vee-validate 父组件获取子组件表单校验结果的实例代码
May 20 Javascript
layui添加动态菜单与选项卡 AJAX请求的例子
Sep 25 Javascript
Vue v-model组件封装(类似弹窗组件)
Jan 08 Javascript
vue下axios拦截器token刷新机制的实例代码
Jan 17 Javascript
基于canvas实现手写签名(vue)
May 21 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中Session的概念
2006/10/09 PHP
全文搜索和替换
2006/10/09 PHP
PHP中获取变量的变量名的一段代码的bug分析
2011/07/07 PHP
PHP中strtotime函数使用方法分享
2012/01/10 PHP
PHP序列号生成函数和字符串替换函数代码
2012/06/07 PHP
Erlang的运算符(比较运算符,数值运算符,移位运算符,逻辑运算符)
2012/07/23 PHP
js AspxButton的客户端操作
2009/06/26 Javascript
html超链接打开窗口大小的方法
2013/03/05 Javascript
为指定的元素添加遮罩层的示例代码
2014/01/15 Javascript
Js与下拉列表处理问题解决
2014/02/13 Javascript
jquery如何根据值设置默认的选中项
2014/03/17 Javascript
Jquery+asp.net后台数据传到前台js进行解析的方法
2014/05/11 Javascript
BootstrapTable加载按钮功能实例代码详解
2017/09/22 Javascript
基于Bootstrap和JQuery实现动态打开和关闭tab页的实例代码
2019/06/10 jQuery
微信小程序wx.navigateTo中events属性实现页面间通信传值,数据同步
2019/07/13 Javascript
js使用文件流下载csv文件的实现方法
2019/07/15 Javascript
vue中el-input绑定键盘按键(按键修饰符)
2020/07/22 Javascript
[01:14:10]2014 DOTA2国际邀请赛中国区预选赛 SPD-GAMING VS Orenda
2014/05/22 DOTA
详解Python中的正则表达式的用法
2015/04/09 Python
python中numpy.zeros(np.zeros)的使用方法
2017/11/07 Python
python3去掉string中的标点符号方法
2019/01/22 Python
django与小程序实现登录验证功能的示例代码
2019/02/19 Python
python从zip中删除指定后缀文件(推荐)
2019/12/05 Python
浅谈Python中的字符串
2020/06/10 Python
python删除指定列或多列单个或多个内容实例
2020/06/28 Python
Python3 搭建Qt5 环境的方法示例
2020/07/16 Python
CSS实现定位元素居中的方法
2015/06/23 HTML / CSS
HTML5 Video标签的属性、方法和事件汇总介绍
2015/04/24 HTML / CSS
Rosetta Stone官方网站:语言学习
2019/01/05 全球购物
澳大利亚网上买书:Angus & Robertson
2019/07/21 全球购物
如果有两个类A,B,怎么样才能使A在发生一个事件的时候通知B
2016/03/12 面试题
生日宴会主持词
2014/03/20 职场文书
幼儿园2015年度工作总结
2015/04/01 职场文书
2015年财务部工作总结
2015/04/10 职场文书
2015年信息技术教研组工作总结
2015/07/22 职场文书
Win11软件图标固定到任务栏
2022/04/19 数码科技