JQuery 的bind和unbind函数

测试:
页面代码:
<body>

<input type="button" name="aaa" value="点击我">

<input type="checkbox" name="checkbox1">

</body>
JQuery代码:

$().ready(function(){

for (var i = 0; i < 3; i++) {

$("input[type=‘button‘]").click(function(){

alert("aaaa");

});

}
}
alert("aaaa")会执行三次,在事件嵌套事件中,不希望看到这样的情况,需要把上层事件禁用,此时可引入bind和unbind函数解决。
引入函数:

for (var i = 0; i < 3; i++) {

$("input[type=‘button‘]").unbind("click");

$("input[type=‘button‘]").bind("click", function(){

alert("aaa");

});

}
alert("aaa");仅执行一次。

bind() 方法为被选元素添加一个或多个事件处理程序,并规定事件发生时运行的函数
unbind() 方法移除被选元素的事件处理程序。能够移除所有的或被选的事件处理程序,或者当事件发生时终止指定函数的运行。
event 是事件类型,类型包括:blur、flcus、load、resize、scroll、unload、click、dblclikc、mousedown、mouseup、mousemove、mouseover、mouseout、mouseenter、mouseleave、change、select、submit、keydown、keypress、keyup和error等,当然也可以是自定义名称。
data 为可选参数,作文event.data属性值传递给事件对象的额外数据对象。
function 是用来绑定的处理函数。 
语法:
$(selector).bind(event,data,function) 
// event 和 function 必须指出

下面些段代码做说明:

例1:删除p的所有事件

$("p").unbind();

例2:删除p的click事件

$("p").unbind("click");

例2:删除p元素click事件后出发的test函数 和 添加p元素click事件后触发的test函数

$("p").unbind("click",test);
$("p").bind("click",test);

注意:要定义 .bind() 必须指明什么事件和函数

现在来看个简单的demo ,整个div有一个点击收起展开的事件,如果想要点击链接但是不触发div的点击事件,需要在触发链接的时候把div的点击事件禁用,这里我用到链接mouseenter事件是unbind删除div的事件。这里还不算完,这时候只要鼠标进入链接区域,div的点击事件就删除了,我们还需要加入鼠标移出链接区域的时候恢复div点击事件。代码如下:

1
2
3
4
5
6
7
8
9
10
$(function(){ var Func = function(){    $(".com2").toggle(200); }
        $(".test").click(Func)
        $(".test a").mouseenter(function(){
                $(".test").unbind(); //删除.test的所有事件 });
        $(".test a").mouseleave(function(){
                $(".test").bind("click",Func); //添加click事件 }); });

event 是事件类型…function 是用来绑定的处理函数。部分内容来自http://www.dearoom.com/blog/详解unbind和bind/

http://www.dearoom.com/blog/事件捕获事件冒泡和阻止事件冒泡/
时间: 2024-10-29 07:37:14

JQuery 的bind和unbind函数的相关文章

JQuery中的bind()和unbind()的理解

bind()和unbind()提供了事件的绑定和取消机制,既可以绑定html默认支持的事件,也能够绑定自定义的事件. 1.JQuery中事件可以重复绑定,不会覆盖. 1 $("#button1").bind("click",function(){ 2 alert("func1"); 3 }); 4 $("#button1").bind("click",function(){ 5 alert("fu

JQuery中事件one、bind、unbind、live、delegate、on、off、trigger、triggerHandler的各种使用区别

JQuery事件one,支持参数 1 <!DOCTYPE html> 2 <html xmlns="http://www.w3.org/1999/xhtml"> 3 <head> 4 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 5 <title>JQuery事件one,支持参数</tit

Jquery动态bind绑定已有函数,函数自动执行的问题解决方法

在bind后面的方法,不能带括号,带括号就自动执行了... <script> //通过子元素删除某行 function deleteRow() { var flag = confirm('确认要删除吗?'); if(flag == true) { console.log($(this).parents("tr").remove()) bootbox.alert("删除成功!"); } } $(function(){ //jquery对象克隆方法,克隆任意

jQuery的.bind()、.live()和.delegate()之间区别

基本要素 DOM树 首先,可视化一个HMTL文档的DOM树是很有帮助的.一个简单的HTML页面看起来就像是这个样子: 事件冒泡(又称事件传播) 当我们点击一个链接时,其触发了链接元素的单击事件,该事件则引发任何我们已绑定到该元素的单击事件上的函数的执行. $('a').bind('click', function() { alert("That tickles!") }); 因此一个单击操作会触发alert函数的执行. click事件接着会向树的根方向传播,广播到父元素,然后接着是每个

jQuery中 .bind() .live(). delegate() . on() 的区别

jQuery中   .bind()    .live().   delegate() .   on()  的区别 这几种方法都是绑定事件用到的,但是他们之间有些差别 bind(type,[data],fn) 为每个匹配元素的特定事件绑定事件处理函数 例如: <ul> <a href="#"><li>1111111</li></a> <a href="#"><li>22222</

Jquery 的bind(), live(), delegate(), on()绑定事件方式

1. 因为项目中经常会有利用jquery操作dom元素的增删操作,所以会涉及到dom元素的绑定事件方式,简单的归纳一下bind,live,delegate,on的区别,以便以后查阅. bind() 适用所有版本,但是根据官网解释,自从jquery1.7版本以后bind()函数推荐用on()来代替. live() jquery1.9版本以下支持,jquery1.9及其以上版本删除了此方法,jquery1.9以上版本用on()方法来代替. delegate() 单事件处理:例如 $(selector

jQuery中bind方法和live方法区别解析

Javascript中的事件有它的独特性,有默认的执行事件,例如冒泡就是其中的一个.在很多比较复杂的应用程序中,停止事件的冒泡或捕获在程序开发当中是十分有用的,而在IE中有它的独特方式来阻止事件的冒泡(和其它浏览器方式不同). 以下给出一种通用的方式来实现阻止事件的冒泡,该通用方式接受一个参数[传递到事件处理程序中的事件对象],该函数处理取消事件冒泡的两种方式:标准的W3C方式和非标准的IE方式: 什么是事件冒泡[又称为事件传播]:当我们点击一个元素时,它会触发bind在该元素上的click事件

jquery中bind事件时的命名空间用法(转)

场景:页面上的某个元素bind多个click事件处理函数,视用户的具体交互情况来决定到底使用哪个处理函数. 问题: unbind时会解绑所有的click事件,造成误伤.如果之前bind时有定义处理函数的方法名,可以通过将方法名传给unbind的第二个参数来解绑指定的bind:但很多情况下bind的处理函数都是匿名函数,此时unbind的第二个参数无法处理. click事件发生时无法指定调用某个具体的事件处理函数,只能将不该调用的函数给unbind掉. 解决:采用命名空间,命名空间用法 <!DOC

jQuery的.bind()、.live()和.delegate()之间区别[转]

摘要:jQuery的.bind()..live()和.delegate()之间的区别并非总是那么明显的,然而,如果我们对所有的不同之处都有清晰的理解的话,那么这将会有助于我们编写出更加简洁的代码,以及防止在交互应用中弹出错误. 基本要素 DOM树 首先,可视化一个HMTL文档的DOM树是很有帮助的.一个简单的HTML页面看起来就像是这个样子: 事件冒泡(又称事件传播) 当我们点击一个链接时,其触发了链接元素的单击事件,该事件则引发任何我们已绑定到该元素的单击事件上的函数的执行. $('a').b