首頁 > web前端 > js教程 > 主體

jQuery綁定事件監聽bind和移除事件監聽unbind用法實例詳解_jquery

WBOY
發布: 2016-05-16 15:19:13
原創
1976 人瀏覽過

本文實例講述了jQuery綁定事件監聽bind和移除事件監聽unbind用法。分享給大家參考,具體如下:

這裡分別採用後bind(eventType,[data],Listener)//data為可選參數,one()此方法綁定的事件觸發一次後自動刪除,unbind(eventType,Listener),

實例:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<title>unbind(eventType,listener)</title>
<style type="text/css">
<!--
img{
 border:1px solid #000000;
}
input{
 border:1px solid #570000;
}
-->
</style>
<script language="javascript" src="jquery.min.js"></script>
<script language="javascript">
$(function(){
 var fnMyFunc1; //函数变量
 $("img")
 .bind("click",fnMyFunc1 = function(){ //赋给函数变量
  $("#show").append("<div>点击事件1</div>");
 })
 .bind("click",function(){
  $("#show").append("<div>点击事件2</div>");
 })
 .bind("click",function(){
  $("#show").append("<div>点击事件3</div>");
 });
 $("input[type=button]").click(function(){
 $("img").unbind("click",fnMyFunc1); //移除事件监听myFunc1
 });
});
</script>
</head>
<body>
 <img src="11.jpg"> <input type="button" value="移除事件1">
 <div id="show"></div>
</body>
</html>

登入後複製

再來看這段測試程式碼:

<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、mouselectleave、change、se 、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點擊事件。程式碼如下:

$(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 是用來綁定的處理函數。

更多關於jQuery事件相關內容有興趣的讀者可查看本站專題:《jQuery常見事件用法與技巧總結

希望本文所述對大家jQuery程式設計有所幫助。

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!