jQuery.bind() 函数详解
bind()
函数用于为每个匹配元素的一个或多个事件绑定事件处理函数。
此外,你还可以额外传递给事件处理函数一些所需的数据。
执行bind()
时,事件处理函数会绑定到每个匹配元素上。因此你使用bind()
所有button元素绑定了click事件,是为当时文档中存在的每个button元素绑定click事件。如果之后你向文档中添加了新的button元素,绑定事件不会对其生效。如果你希望绑定事件对未来新添加的元素也生效,请使用on()、delegate()、live()等事件函数(尽量优先使用靠前的事件函数)。
此外,你可以为同一元素、同一事件类型绑定多个事件处理函数。触发事件时,jQuery会按照绑定的先后顺序依次执行绑定的事件处理函数。
要删除通过bind()
绑定的事件,请使用unbind()函数。
该函数属于jQuery
对象(实例)。
语法
bind()
函数主要有以下两种形式的用法:
用法一:
jQueryObject.bind( events [, data ], handler )
用法二:jQuery 1.4.3 新增支持该用法。
jQueryObject.bind( events [, data ] [, isDefaultBubble ] )
用法三:jQuery 1.4 新增支持该用法。
jQueryObject.bind( eventsMap )
参数
参数 | 描述 |
---|---|
events | String类型一个或多个用空格分隔的事件类型和可选的命名空间,例如"click"、"focus click"、"keydown.myPlugin"。 |
data | 可选/任意类型触发事件时,需要通过event.data传递给事件处理函数的任意数据。 |
handler | Function类型指定的事件处理函数。 |
isDefaultBubble |
可选/Boolean类型指定触发事件时,是否允许元素的默认行为和事件冒泡。默认为true 。
|
eventsMap |
Object类型一个Object对象,其每个属性对应事件类型和可选的命名空间(参数events ),属性值对应绑定的事件处理函数(参数handler )。
|
关于参数events
中可选的命名空间(1.4.3+才支持),请参考最下面的示例代码。
参数handler
中的this
指向当前DOM元素。bind()
还会为handler
传入一个参数:表示当前事件的Event对象。
参数handler
的返回值与DOM原生事件的处理函数返回值作用一致。例如submit(表单提交)事件的事件处理函数返回false
,可以阻止表单的提交。
参数isDefaultBubble
用于指示是否允许元素的默认行为和事件冒泡。如果该值为false
,它将阻止元素的默认行为(例如:触发click事件的链接的默认跳转行为,触发submit事件的表单的默认提交行为)和事件的冒泡传递。
返回值
bind()
函数的返回值为jQuery类型,返回当前jQuery对象本身。
示例&说明
以点击事件("click")为例,以下是jQuery中事件函数的常规用法(某些函数也存在其它形式的用法,此处暂不列出):
// 这里的选择器selector用于指定可以触发事件的元素// 这里的选择器ancestor应是selector的祖辈元素,selector触发的事件可以被其祖辈元素在事件流中捕获,从而以"委托代理"的形式触发事件。 // jQuery 1.0+ (1.4.3+支持参数data)$("selector").click( [ data ,] handler ); // jQuery 1.0+ (1.4.3+支持参数data)$("selector").bind( "click" [, data ], handler ); // jQuery 1.3+ (1.4+支持参数data)$("selector").live( "click" [, data ], handler ); // jQuery 1.4.2+$("ancestor").delegate( "selector", "click" [, data ], handler ); // jQuery 1.7+$("ancestor").on( "click", "selector" [, data ], handler );
请参考下面这段初始HTML代码:
<div id="n1"> <p id="n2"><span>CodePlayer</span></p> <p id="n3"><span>专注于编程开发技术分享</span></p> <em id="n4">http://www.365mini.com</em></div><p id="n5">Google</p>
我们为<div>中的所有<p>元素绑定点击事件:
//为div中的所有p元素的click事件绑定事件处理函数//只有n2、n3可以触发该事件$("div p").bind("click", function(){// 这里的this指向触发点击事件的p元素(Element) alert( $(this).text() );});
运行代码(以下代码请自行复制到演示页面运行)
此外,我们还可以同时绑定多个事件,并为事件处理函数传递一些附加的数据,我们可以通过jQuery为事件处理函数传入的参数event
(Event事件对象)来进行处理:
var obj = { id: 5, name: "王五" }; //为n5绑定mouseenter mouseleave两个事件,并为其传入附加数据obj// 附加数据可以是任意类型$("#n5").bind("mouseenter mouseleave", obj, function(event){ var $me = $(this); var obj = event.data; // 这就是传入的附加数据 if( event.type == "mouseenter"){ $me.html( "你好," + obj.name + "!"); }else if(event.type == "mouseleave" ){ $me.html( "再见," + obj.name + "!"); } } );
此外,如果符合条件的元素是bind()
函数执行后新添加的,绑定事件不会对其生效。同样以初始HTML代码为例,我们可以编写如下jQuery代码:
//为div中的所有p元素的click事件绑定事件处理函数//只有n2、n3可以触发该事件$("div p").bind("click", function(event){ alert( $(this).text() );}); // 新添加的n6不会触发上述click事件$("#n1").append('<p id="n6">上述绑定的click事件不会对该元素也生效!</p>');
参数events
还支持为事件类型附加额外的命名空间。当为同一元素绑定多个相同类型的事件处理函数时。使用命名空间,可以在触发事件、移除事件时限定触发或移除的范围。
function clickHandler(event){ alert( "触发时的命名空间:[" + event.namespace + "]");} var $p = $("p"); // A:为所有p元素绑定click事件,定义在foo和bar两个命名空间下$p.bind( "click.foo.bar", clickHandler ); // B:为所有p元素绑定click事件,定义在test命名空间下$p.bind( "click.test", clickHandler ); var $n2 = $("#n2"); // 触发所有click事件$n2.trigger("click"); // 触发A和B (event.namespace = "") // 触发定义在foo命名空间下的click事件$n2.trigger("click.foo"); // 触发A (event.namespace = "foo")// 触发定义在bar命名空间下的click事件$n2.trigger("click.bar"); // 触发A (event.namespace = "bar")// 触发同时定义在foo和bar两个命名空间下的click事件$n2.trigger("click.foo.bar"); // 触发A (event.namespace = "bar.foo") // 触发定义在test命名空间下的click事件$n2.trigger("click.test"); // 触发B (event.namespace = "test")
bind()
函数的参数eventsMap
是一个对象,可以"属性-值"的方式指定多个"事件类型-处理函数"。对应的示例代码如下:
var eventsMap = { "mouseenter": function(event){ $(this).html( "Hello!"); }, "mouseleave": function(event){ $(this).html( "Bye!"); }}; //为n5绑定mouseenter mouseleave两个事件$("#n5").bind( eventsMap );
转载于:https://www.cnblogs.com/dexjinkey/p/6089044.html
jQuery.bind() 函数详解相关推荐
- [zz]jQuery.extend 函数详解
JQuery的extend扩展方法: Jquery的扩展方法extend是我们在写插件的过程中常用的方法,该方法有一些重载原型,在此,我们一起去了解了解. 一.Jquery的扩 ...
- bind() c语言,c/c++ 标准库 bind 函数详解
bind函数定义在头文件 functional 中.可以将 bind 函数看作一个通用的函数适配器,它接受一个可调用对象,生成一个新的可调用对象来"适应"原对象的参数列表. bin ...
- c语言中bind函数,c/c++ 标准库 bind 函数详解
bind函数定义在头文件 functional 中.可以将 bind 函数看作一个通用的函数适配器,它接受一个可调用对象,生成一个新的可调用对象来"适应"原对象的参数列表. bin ...
- C语言网络编程:bind函数详解
文章目录 函数功能 函数头文件 函数使用 函数参数 函数举例 为什么需要bind函数 服务器如何知道客户端的ip和端口号 htons函数 `htons`兄弟函数`htonl`,`ntohs`,`nto ...
- 《Javascript高级程序设计》读书笔记之bind函数详解
为什么需要bind var name = "The Window"; var object = {name: "My Object",getNameFunc: ...
- jQuery.parseJSON()函数详解
jQuery.parseJSON()函数用于将格式完好的JSON字符串转为与之对应的JavaScript对象. 所谓"格式完好",就是要求指定的字符串必须符合严格的JSON格式,例 ...
- js $.ajax stop,jQuery.ajaxStop() 函数详解
ajaxStop()函数用于为AJAX请求的ajaxStop事件绑定处理函数. 这是一个全局AJAX事件函数,用于在ajaxStop事件被触发时执行绑定的事件处理函数. jQuery官方文档描述:无论 ...
- jquery.ajaxSetup()函数详解
jquery.ajaxSetup() 函数用于设置全局默认设置.jquery1.1新增 该静态函数 语法: jquery.ajaxSetup(settings) 参数(settings):一个对象, ...
- jQuery.inArray() 函数详解
jQuery.inArray()函数用于在数组中搜索指定的值,并返回其索引值.如果数组中不存在该值,则返回 -1. 该函数属于全局jQuery对象. 语法 jQuery 1.2 新增该静态函数. jQ ...
最新文章
- Python生成器的用法,使用生成器灵活的生成斐波那契数列
- Android-PopupWindow
- mysql 日期查询今天_Mysql 日期查询今天、昨天、近7天、近30天、本月、上一月、本季...
- CSS3属性box-shadow使用教程
- Oracle 19.6 的有趣BUG:可能引发 CLOB 存储数据的丢失
- php7 phpunit,Make phpunit catch php7 TypeError
- Shell命令打包Android apk
- 【Matlab代码】图像的小波分解和重构实现
- cpuv(cpuv2和v3有什么区别)
- linux 耳机驱动程序,TAS571XSW-LINUX
- pip install XXX总是报错,例如:Exception: Traceback (most recent call last):这种错误怎么办?
- 金蝶eas怎么引出凭证_金蝶KIS软件操作技巧/百问百答
- MSDC 4.3 接口规范(30)
- 计算机办公软件应用英文,办公软件用英语怎么说英文表达
- 【更好用的单片机】Stduino学习(三十三)面包板模块
- ppt中如何插入页码(如何从第二页插入页码?)
- rsync守护进程部署
- shiro手机无状态登录访问和电脑端登录访问两种方式处理
- 使用OPC DA接口将robotdtudio与西门子sim进行仿真连接
- 一个小老板的日常管理,希望能让创业朋友学到东西
热门文章
- Nessus详细安装教程(Windows版)
- 华为云通用计算增强型C6到底怎么样?
- 图书速读 | 一分钟读完《学会如何学习》
- HTML语言全称叫超文本标记语言,其中的“标记“如何理解,“超文本”又如何理解?
- 解决公众号网页 微信免登录 重定向 地址 只能带一个参数问题
- 惠普笔记本无法调节亮度解决办法【成功解决记录贴】
- If I Have One Million
- Linux命令06 - - wget 下载网络文件
- qq音乐登录参数详细分析及密码加密最新版
- H 指数 (citations[index] > h 才能符合条件)