有时候事件执行完了,想取消事件的效果可以通过一定的办法来处理。比如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事件正常执行。
还有一种跟bind()方法类似的方法one(),区别大概就是one()方法只执行一次。
为每一个匹配元素的特定事件(像click)绑定一个一次性的事件处理函数。
代码如下:
<script type=\"text/javascript\"> $(function(){ $(\'#btn\').one(\"click\", function(){ $(\'#test\').append(\"<p>我的绑定函数1</p>\"); }).one(\"click\", function(){ $(\'#test\').append(\"<p>我的绑定函数2</p>\"); }).one(\"click\", function(){ $(\'#test\').append(\"<p>我的绑定函数3</p>\"); }); }) </script>
点击后,只执行一次。再次点击不会触发效果。这就是one方法。
以上这篇深入理解jQuery之事件移除就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持phpstudy。
本文地址:https://www.stayed.cn/item/13542
转载请注明出处。
本站部分内容来源于网络,如侵犯到您的权益,请 联系我