JQuery Bind()事件详解

刚开始我们先看一下它的定义:

.bind( eventType [, eventData], handler(eventObject))

 .Bind()方法的主要功能是在向它绑定的对象上面提供一些事件方法的行为。期中它的三个参数的意义分别如下:

 eventType是一个字符串类型的事件类型,就是你所需要绑定的事件。这类类型可以包括如下:blur, focus, focusin, focusout, load, resize, scroll, unload, click, dblclick, mousedown, mouseup, mousemove, mouseover, mouseout, mouseenter, mouseleave, change, select, submit, keydown, keypress, keyup, error 。这里需要注意的是,这里用的都是javascript里面的事件方法,而不是JQuery里面的,JQuery里面的事件方法均在JavaScript前面多了一个“on”,比如onclick,onblur 等等。

eventData参数是一个可选参数,不过它在平时用的比较少。如果提供了这个参数,那么我们就能把一些附加信息传递给事件处理函数了。这个参数有个很好的用处,就是处理闭包带来的问题。待会在给大家举实例。

Handler是用来绑定的处理函数,其实也也就是回调函数,处理完数据之后相应的方法。



 

图一: jquery里的bind参数提示

1.第一个简单的bind ()事件---Hello Word

Html Code:


 代码如下 复制代码

1 <input id="BtnFirst" type="button" value="Click Me"/>

JavaScript Code:

1 $(function () {2             $("#BtnFirst").bind("click", function () {3                 alert("Hello World");4             });5  })

打开页面之后,点击按钮“Click Me”,就会弹出”Hello World”。这算是我们最简单的绑定事件吧。很简单吧。

2.绑定多个事件

我们可以通过bind()来绑定多个事件(其实,这也就是JQuery以及Linq中非常有名的链式编程)。实现的主要功能就是当我们点击的时候,弹出“Hello World”,当离开button的时候,显示出一个div。

Html Code:


 代码如下 复制代码
1 <div>2    <input id="BtnFirst" type="button" value="Click Me"/></div>3    <div id="TestDiv" style=" width:200px; height:200px; display:none; background-color:Red;">4 </div>

JavaScript Code:


 代码如下 复制代码
1 $(function () {2             $("#BtnFirst").bind("click", function () {3                 alert("Hello World");4             }).bind("mouseout", function () {5                 $("#TestDiv").show("slow");6             });7  })

这段代码页很容易理解,就是当button被点击的时候,弹出一个"Hello World",在离开的时候,在把div给显示出来。JQuery里的动画,均可以用“slow”、“fast”和“normal”,当然你还可以设置相关的毫秒数。

3.bind()事件的对象

Handler这个回调函数可以接受一个参数,当这个函数被调用时,一个JavaScript事件对象会作为一个参数传进来。

这个事件对象通常是没有必要且可以省略的参数,因为当这个事件处理函数绑定的时候就能够明确知道他在触发的时候应该做些什么,通常就已经可以获得充分的信息了。然而在有些时候,在事件初始化的时候需要获取更多关于用户环境的信息。

给一个JQuery官网上面的例子:

Css Code:


 代码如下 复制代码
1   <style>2 p { background:yellow; font-weight:bold; cursor:pointer; 3 padding:5px;}4 p.over { background: #ccc;}5 span { color:red;}6 </style>

Html Code:


 代码如下 复制代码
1 <p>Click or double click here.</p>2 <span></span>

JavaScript Code:


 代码如下 复制代码
1 <script> 2 $("p").bind("click", function(event){ 3 var str = "( " + event.pageX + ", " + event.pageY + " )"; 4 $("span").text("Click happened! " + str); 5 }); 6 $("p").bind("dblclick", function(){ 7 $("span").text("Double-click happened in " + this.nodeName); 8 }); 9 $("p").bind("mouseenter mouseleave", function(event){10 $(this).toggleClass("over");11 });12 13 </script>

这里的主要功能是为了实现当用户点击p这个对象的时候,把当前相对于页面的坐标显示在span标签里面,这里就用到了event这个事件。把参数传进去。
4.unbind()事件

unbind([type],[data],Handler) 是 bind()的反向操作,从每一个匹配的元素中删除绑定的事件。如果没有参数,则删除所有绑定的事件。你可以将你用bind()注册的自定义事件取消绑定。如果提供了事件类型作为参数,则只删除该类型的绑定事件。如果把在绑定时传递的处理函数作为第二个参数,则只有这个特定的事件处理函数会被删除。

Html Code:

1 
 代码如下 复制代码
<body onclick="MyBodyClick()">
2 <div onclick="MyClickOut()">
3 <div onclick="MyClickInner()">
4 <span id="MySpan">I love JQuery!! </span>
5 </div>
6 </div>
7 <span id="LooseFocus">失去焦点</span>
8 </body>

JavaScript Code:


 代码如下 复制代码
1  function MyClickOut() { 2             alert("outer Div"); 3         } 4         function MyClickInner() { 5             alert("Inner Div"); 6         } 7         function MyBodyClick() { 8             alert("Body Click"); 9         }10         var foo = function () {11             alert("I'm span.");12         }13         $(function () {14             $("#MySpan").bind("click", foo);15         })       16         $(function () {17             $("#LooseFocus").unbind("click", foo);18         })

上面的代码也很好理解,就是当用户的鼠标在span上面停留的时候,然后把span的click事件给取消掉。所以,最后它只会弹出body里面的alert。

最后,简单的了解一下one()事件的使用,其实one和bind是一样,都是为了绑定事件而产生的。One与bind基本上差不多,不同的在调用jQuery.event.add时,把注册的事件处理的函数做了一个小小的调整。One调用了jQuery.event.proxy进行了代理传入的事件处理函数。在事件触发调用这个代理的函数时,先把事件从cache中删除,再执行注册的事件函数。这里就是闭包的应用,通过闭包得到fn注册的事件函数的引用。  

使用规则: one(type,[data],fn)

为每一个匹配元素的特定事件(像click)绑定一个一次性的事件处理函数。 在每个对象上,这个事件处理函数只会被执行一次。其他规则与bind()函数相同。这个事件处理函数会接收到一个事件对象,可以通过它来阻止(浏览器)默认的行为。如果既想取消默认的行为,又想阻止事件起泡,这个事件处理函数必须返回false。

贴一下,bind和one的各自代码的实现,看官可以稍微的做一个比较:

Bind()代码的实现:


 代码如下 复制代码

1 bind : function(type, data, fn) { 2 return type == "unload" ? this.one(type, data, fn) : this 3 .each(function() {// fn || data, fn && data实现了data参数可有可无 4 jQuery.event.add(this, type, fn || data, fn && data); 5 }); },

One()  代码的实现:

1 one : function(type, data, fn) { 2 var one = jQuery.event.proxy(fn || data, function(event) { 3 jQuery(this).unbind(event, one); 4 return (fn || data).apply(this, arguments);/this->当前的元素 5 }); 6 return this.each(function() { 7 jQuery.event.add(this, type, one, fn && data); 8 }); 9 },

 

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索javascript
, 函数
, 参数
, 代码
, 事件
this
jquery bind事件、jquery bind多个事件、jquery bind 双击事件、jquery bind绑定事件、jquery bind 事件源,以便于您获取更多的相关知识。

时间: 2024-09-26 16:40:38

JQuery Bind()事件详解的相关文章

跟我学jquery(六)jquery中事件详解 .

   由于jquery本身就是web客户端的有力帮手,所以事件对于它来说就显得尤为重要了,事件是脚本编程的灵魂. 所以此内容也是jQuery学习的重点.        在传统的javascript中,注册一个事件也是非常简单的事情,下面我们具体看一下一个简单的示例: [html] view plaincopyprint? document.getElementById("testDiv2").onclick = showMsg;   等效于: [html] view plaincopy

jQuery unbind 删除绑定事件详解_jquery

unbind([type],[data]) 是 bind()的反向操作,从每一个匹配的元素中删除绑定的事件.如果没有参数,则删除所有绑定的事件.你可以将你用bind()注册的自定义事件取消绑定.如果提供了事件类型作为参数,则只删除该类型的绑定事件.如果把在绑定时传递的处理函数作为第二个参数,则只有这个特定的事件处理函数会被删除. 返回值 : jQuery 参数 : type (String) : (可选) 事件类型 data (Function) : (可选) 要从每个匹配元素的事件中反绑定的事

js监听键盘事件的方法_原生和jquery的区别详解_javascript技巧

经常需要监听键盘的事件,以便做更好的操作,基本原理是:监听全局键盘,每一个键盘,当用户按下某一按键时,返回对应的键值,然后再判断用户按下了哪一科按键,键值对应按键的名称在最下面列出,自行比对.去以下介绍两种不同的方式 原生键盘监听事件:按下一次按键,分为三个过程,按下-按住-松开 onkeydown:某个键被按下 onkeypress:某个键盘的键被按下或按住 onkeyup:某个键盘的键被松开 使用方法,一般来说,键盘监听是直接在整个页面文档上进行监听的,也就是document上 以下是原生的

jquery html动态添加的元素绑定事件详解_jquery

在实际开发中会遇到要给动态生成的html元素绑定触发事件的情况: <div id="testdiv"> <ul></ul> </div> 假设我们要给ul动态添加的<li>绑定click事件形成如下结果 <div id="testdiv"> <ul> <li name="apple">apple</li> <li name="

jQuery Ajax 实例详解 ($.ajax、$.post、$.get)_AJAX相关

Jquery在异步提交方面封装的很好,直接用AJAX非常麻烦,Jquery大大简化了我们的操作,不用考虑浏览器的诧异了. 推荐一篇不错的jQuery Ajax 实例文章,忘记了可以去看看, 地址为:http://www.jb51.net/article/26903.htm $.post.$.get是一些简单的方法,如果要处理复杂的逻辑,还是需要用到jQuery.ajax() 一.$.ajax的一般格式 $.ajax({ type: 'POST', url: url , data: data ,

jquery in action 详解

jquery in action 详解 1.引用传递 在网页特效中,string int boolean 不是按引用进行传递的.而对象和数组是按引用传递的. 示例:  // create an array of items         var items = new array("one", "two", "three");         // create a reference to the array of items        

Android 的触摸事件详解及示例代码_Android

由于触摸(Touch)而触发的事件 Android的事件:onClick, onScroll,onFling等等,都是由许多个Touch组成的.其中Touch的第一个状态肯定是ACTION_DOWN,表示按下了屏幕.之后,touch将会有后续事件,可能是: ACTION_MOVE //表示为移动手势 ACTION_UP //表示为离开屏幕 ACTION_CANCEL //表示取消手势,不会由用户产生,而是由程序产生的 一个Action_DOWN, n个ACTION_MOVE, 1个ACTION_

Jquery 效果使用详解_jquery

jQuery是一款同prototype一样优秀js开发库类,特别是对css和XPath的支持,使我们写js变得更加方便!如果你不是个js高手又想写出优 秀的js效果,jQuery可以帮你达到目的! .hide() 隐藏匹配的元素. .hide() 这个方法不接受任何参数. .hide([duration][,complete]) duration 一个字符串或者数字决定动画将运行多久. complete 在动画执行完时执行的函数. .hide([duration][,easing][,compl

jquery inArray()函数详解

jquery inarray()函数详解 jquery.inarray(value,array) 确定第一个参数在数组中的位置(如果没有找到则返回 -1 ). determine the index of the first parameter in the array (-1 if not found). 返回值 jquery 参数 value (any) : 用于在数组中查找是否存在 array (array) : 待处理数组. 今天有朋友问了个问题,如下 var testarr=[{"a&