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() 函数详解相关推荐

  1. [zz]jQuery.extend 函数详解

    JQuery的extend扩展方法:       Jquery的扩展方法extend是我们在写插件的过程中常用的方法,该方法有一些重载原型,在此,我们一起去了解了解.       一.Jquery的扩 ...

  2. bind() c语言,c/c++ 标准库 bind 函数详解

    bind函数定义在头文件 functional 中.可以将 bind 函数看作一个通用的函数适配器,它接受一个可调用对象,生成一个新的可调用对象来"适应"原对象的参数列表. bin ...

  3. c语言中bind函数,c/c++ 标准库 bind 函数详解

    bind函数定义在头文件 functional 中.可以将 bind 函数看作一个通用的函数适配器,它接受一个可调用对象,生成一个新的可调用对象来"适应"原对象的参数列表. bin ...

  4. C语言网络编程:bind函数详解

    文章目录 函数功能 函数头文件 函数使用 函数参数 函数举例 为什么需要bind函数 服务器如何知道客户端的ip和端口号 htons函数 `htons`兄弟函数`htonl`,`ntohs`,`nto ...

  5. 《Javascript高级程序设计》读书笔记之bind函数详解

    为什么需要bind var name = "The Window"; var object = {name: "My Object",getNameFunc: ...

  6. jQuery.parseJSON()函数详解

    jQuery.parseJSON()函数用于将格式完好的JSON字符串转为与之对应的JavaScript对象. 所谓"格式完好",就是要求指定的字符串必须符合严格的JSON格式,例 ...

  7. js $.ajax stop,jQuery.ajaxStop() 函数详解

    ajaxStop()函数用于为AJAX请求的ajaxStop事件绑定处理函数. 这是一个全局AJAX事件函数,用于在ajaxStop事件被触发时执行绑定的事件处理函数. jQuery官方文档描述:无论 ...

  8. jquery.ajaxSetup()函数详解

    jquery.ajaxSetup() 函数用于设置全局默认设置.jquery1.1新增 该静态函数 语法:  jquery.ajaxSetup(settings) 参数(settings):一个对象, ...

  9. jQuery.inArray() 函数详解

    jQuery.inArray()函数用于在数组中搜索指定的值,并返回其索引值.如果数组中不存在该值,则返回 -1. 该函数属于全局jQuery对象. 语法 jQuery 1.2 新增该静态函数. jQ ...

最新文章

  1. Python生成器的用法,使用生成器灵活的生成斐波那契数列
  2. Android-PopupWindow
  3. mysql 日期查询今天_Mysql 日期查询今天、昨天、近7天、近30天、本月、上一月、本季...
  4. CSS3属性box-shadow使用教程
  5. Oracle 19.6 的有趣BUG:可能引发 CLOB 存储数据的丢失
  6. php7 phpunit,Make phpunit catch php7 TypeError
  7. Shell命令打包Android apk
  8. 【Matlab代码】图像的小波分解和重构实现
  9. cpuv(cpuv2和v3有什么区别)
  10. linux 耳机驱动程序,TAS571XSW-LINUX
  11. pip install XXX总是报错,例如:Exception: Traceback (most recent call last):这种错误怎么办?
  12. 金蝶eas怎么引出凭证_金蝶KIS软件操作技巧/百问百答
  13. MSDC 4.3 接口规范(30)
  14. 计算机办公软件应用英文,办公软件用英语怎么说英文表达
  15. 【更好用的单片机】Stduino学习(三十三)面包板模块
  16. ppt中如何插入页码(如何从第二页插入页码?)
  17. rsync守护进程部署
  18. shiro手机无状态登录访问和电脑端登录访问两种方式处理
  19. 使用OPC DA接口将robotdtudio与西门子sim进行仿真连接
  20. 一个小老板的日常管理,希望能让创业朋友学到东西

热门文章

  1. Nessus详细安装教程(Windows版)
  2. 华为云通用计算增强型C6到底怎么样?
  3. 图书速读 | 一分钟读完《学会如何学习》
  4. HTML语言全称叫超文本标记语言,其中的“标记“如何理解,“超文本”又如何理解?
  5. 解决公众号网页 微信免登录 重定向 地址 只能带一个参数问题
  6. 惠普笔记本无法调节亮度解决办法【成功解决记录贴】
  7. If I Have One Million
  8. Linux命令06 - - wget 下载网络文件
  9. qq音乐登录参数详细分析及密码加密最新版
  10. H 指数 (citations[index] > h 才能符合条件)