深入理解jQuery之事件移除
有時候事件執(zhí)行完了,想取消事件的效果可以通過一定的辦法來處理。比如bind()方法,可以通過unbind()方法來移除事件的效果。
比如下面的一個案例:
<script type="text/javascript"> $(function(){ $('#btn').bind("click", function(){ $('#test').append("<p>我的綁定函數(shù)1</p>"); }).bind("click", function(){ $('#test').append("<p>我的綁定函數(shù)2</p>"); }).bind("click", function(){ $('#test').append("<p>我的綁定函數(shù)3</p>"); }); }) </script>
html部分:
<body> <button id="btn">點擊我</button> <div id="test"></div> </body>
當點擊按鈕btn時,觸發(fā)了三個點擊事件,這里的append()方法,向div層中傳遞了三個段落內容。
append() 方法在被選元素的結尾(仍然在內部)插入指定內容。它與html()方法還是不同的,html()方法是改變整個元素中的內容,而不是向元素結尾插入內容。text()方法與html() 方法類似,但區(qū)別在于html()方法中可以寫入html的代碼,而且可以被正確的解析,而text() 只能當html代碼為正常的字符串。
這里每次點擊,都會執(zhí)行一次事件,想div層末尾添加段落。
下面的代碼是取消事件效果的,可以通過刪除事件,使點擊效果失效:
<script type="text/javascript"> $(function(){ $('#btn').bind("click", function(){ $('#test').append("<p>我的綁定函數(shù)1</p>"); }).bind("click", function(){ $('#test').append("<p>我的綁定函數(shù)2</p>"); }).bind("click", function(){ $('#test').append("<p>我的綁定函數(shù)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>我的綁定函數(shù)1</p>"); }).bind("click", myFun2 = function(){ $('#test').append("<p>我的綁定函數(shù)2</p>"); }).bind("click", myFun3 = function(){ $('#test').append("<p>我的綁定函數(shù)3</p>"); }); $('#delTwo').click(function(){ $('#btn').unbind("click",myFun2); }); }) </script>
unbind()方法的第二個參數(shù)是事件對應得執(zhí)行函數(shù)的名字,這樣執(zhí)行完后,只有myFun2這個事件被刪除了,其他兩個click事件正常執(zhí)行。
還有一種跟bind()方法類似的方法one(),區(qū)別大概就是one()方法只執(zhí)行一次。
為每一個匹配元素的特定事件(像click)綁定一個一次性的事件處理函數(shù)。
代碼如下:
<script type="text/javascript"> $(function(){ $('#btn').one("click", function(){ $('#test').append("<p>我的綁定函數(shù)1</p>"); }).one("click", function(){ $('#test').append("<p>我的綁定函數(shù)2</p>"); }).one("click", function(){ $('#test').append("<p>我的綁定函數(shù)3</p>"); }); }) </script>
點擊后,只執(zhí)行一次。再次點擊不會觸發(fā)效果。這就是one方法。
以上這篇深入理解jQuery之事件移除就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
jQuery拖動div、移動div、彈出層實現(xiàn)原理及示例
正如標題所言的實現(xiàn)原理是使div的position為絕對定位absolute,然后控制其top與left值,需要的朋友可以參考下2014-04-04利用JQuery操作iframe父頁面、子頁面的元素和方法匯總
這篇文章主要給大家介紹了關于利用JQuery操作iframe父頁面、子頁面的元素和方法的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧。2017-09-09