首页 > 语言 > JavaScript > 正文

深入理解jQuery之事件移除

2024-05-06 14:57:03
字体:
来源:转载
供稿:网友

有时候事件执行完了,想取消事件的效果可以通过一定的办法来处理。比如bind()方法,可以通过unbind()方法来移除事件的效果。

比如下面的一个案例:

<script type="text/javascript">  $(function(){    $('#btn').bind("click", function(){           $('#test').append("<p>我的绑定函数1</p>");       }).bind("click", function(){           $('#test').append("<p>我的绑定函数2</p>");       }).bind("click", function(){            $('#test').append("<p>我的绑定函数3</p>");       });  })</script>

html部分:

<body><button id="btn">点击我</button><div id="test"></div></body>

当点击按钮btn时,触发了三个点击事件,这里的append()方法,向div层中传递了三个段落内容。

append() 方法在被选元素的结尾(仍然在内部)插入指定内容。它与html()方法还是不同的,html()方法是改变整个元素中的内容,而不是向元素结尾插入内容。text()方法与html() 方法类似,但区别在于html()方法中可以写入html的代码,而且可以被正确的解析,而text() 只能当html代码为正常的字符串。

这里每次点击,都会执行一次事件,想div层末尾添加段落。

下面的代码是取消事件效果的,可以通过删除事件,使点击效果失效:

<script type="text/javascript">  $(function(){    $('#btn').bind("click", function(){           $('#test').append("<p>我的绑定函数1</p>");       }).bind("click", function(){           $('#test').append("<p>我的绑定函数2</p>");       }).bind("click", function(){            $('#test').append("<p>我的绑定函数3</p>");       });    $('#delAll').click(function(){       $('#btn').unbind("click");    });  })</script>

$('#btn').unbind("click");这句代码的作用就是取消元素btn下的click事件。它不仅仅对于bind()方法有效,它对于click()方法同样有效。从某种角度上讲,bind("click",function(){})与click(function(){})是等价的。

 还可以针对具体的方法,删除特定的事件。

下面的代码可以参考:

<script type="text/javascript">  $(function(){    $('#btn').bind("click", myFun1 = function(){           $('#test').append("<p>我的绑定函数1</p>");       }).bind("click", myFun2 = function(){           $('#test').append("<p>我的绑定函数2</p>");       }).bind("click", myFun3 = function(){            $('#test').append("<p>我的绑定函数3</p>");       });    $('#delTwo').click(function(){       $('#btn').unbind("click",myFun2);    });  })</script>

unbind()方法的第二个参数是事件对应得执行函数的名字,这样执行完后,只有myFun2这个事件被删除了,其他两个click事件正常执行。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

图片精选