jquery如何獲取註冊在某個元素上的事件

antzone發表於2017-03-21

在實際應用中可能需要知道在指定元素上是否註冊事件處理函式或者註冊哪種型別事件處理函式,下面就通過程式碼例項介紹一下如何實現此功能,程式碼例項如下:

[HTML] 純文字檢視 複製程式碼
<!DOCTYPE html>
<html> 
<head> 
<meta charset=" utf-8"> 
<meta name="author" content="http://www.softwhy.com/" /> 
<title>螞蟻部落</title> 
<script type="text/javascript" src="mytest/jQuery/jquery-1.8.3.js"></script>
<script type="text/javascript"> 
$(document).ready(function(){ 
  $("#btn").click(function(){ 
    //code
  }); 
  $("#btn").click(function(){ 
    //code
  }); 
  $("#btn").click(function(){ 
    //code
  });
  $("#btn").dblclick(function(){ 
    //code
  }); 
  var _arr_events=$._data&&$._data($("#btn")[0],"events")||$.data($("#btn")[0],"events"); 
  $("#btshow").click(function(){
    $("#show").html("click事件:"+_arr_events["click"].length+
    "<br/>"+"dblclick事件"+_arr_events["dblclick"].length);
  })
}); 
</script> 
</head> 
<body>
<div id="show"></div> 
<input id="btn" type="button" value="螞蟻部落"/> 
<input id="btshow" type="button" value="檢視效果"/> 
</body> 
</html> 
</span>

上面的程式碼能夠輸出註冊在按鈕上的各個事件型別的數量,下面對程式碼做一下簡單說明:

[JavaScript] 純文字檢視 複製程式碼
$._data&&$._data($("#btn")[0],"events")||$.data($("#btn")[0],"events")

1.jquery1.9和jquery1.9以上支援$._data( elem, "events" )

2.jquery1.2.6-jquery1.4支援$.data( elem, "events", undefined, true )

3.jquery1.5-jquery1.8兩者都支援。

上面的程式碼可以獲取一個物件,此物件中包含指定元素中註冊事件處理函式,圖示如下:

a:3:{s:3:\"pic\";s:43:\"portal/201703/21/100807uhfp6oapfsf9jff2.jpg\";s:5:\"thumb\";s:0:\"\";s:6:\"remote\";N;}

相關文章