javascript什麼是事件委託簡單介紹

antzone發表於2017-04-01

本章節簡單介紹一下javascript中事件委託是什麼。

其實從名字就能看出它的大體意思來,所謂委託就是自己的事情交給其他人去幹。

事件委託利用事件冒泡來實現的,在子元素上發生的事件交由父元素來處理。

比如我們要獲取一個表格當前td單元格的id屬性值,如果在每一個td上都註冊click事件處理函式豈不是很累,尤其是td量很大的時候,如果利用委託方式,將事件處理函式註冊父元素上就輕鬆很多。

程式碼例項如下:

[HTML] 純文字檢視 複製程式碼
<!DOCTYPE html>
<html>
<head>
<meta charset=" utf-8">
<meta name="author" content="http://www.softwhy.com/" />
<title>table細線表格-螞蟻部落</title>
<style type="text/css"> 
#thetable{
  background-color:green;
  font-size:12px;
}
#thetable th{
  text-align:center;
  background-color:#CCF;
  height:30px;
  line-height:30px;
}
#thetable td{
  width:150px;
  height:30px;
  line-height:30px;
  text-align:center;
  background-color:#FFF;
}
</style> 
<script type="text/javascript">
window.onload=function(){
  var otable=document.getElementById("thetable");
  var odiv=document.getElementById("show");
  otable.onclick=function(ev){
    var oEvent=ev||event; 
        var target=oEvent.target||oEvent.srcElement;
        odiv.innerHTML=target.innerHTML;
  }
}
</script>
</head> 
<body> 
<table cellpadding="0" cellspacing="1" id="thetable">
  <tr>
    <th>標題一</th>
    <th>標題二</th>
    <th>標題三</th>
    <th>標題四</th>
  </tr>
  <tr>
    <td>螞蟻部落一</td>
    <td>螞蟻部落二</td>
    <td>螞蟻部落三</td>
    <td>螞蟻部落四</td>
  </tr>
  <tr>
    <td>螞蟻部落一</td>
    <td>螞蟻部落二</td>
    <td>螞蟻部落三</td>
    <td>螞蟻部落四</td>
  </tr>
  <tr>
    <td>螞蟻部落一</td>
    <td>螞蟻部落二</td>
    <td>螞蟻部落三</td>
    <td>螞蟻部落四</td>
  </tr>
</table>
<div id="show"></div>
</body> 
</html>

上面的程式碼就是一個委託的典型應用,只將事件處理函式註冊在table上,利用事件冒泡效果實現委託。

相關閱讀:

1.var oEvent=ev||event可以參閱var ev=window.event||ev的作用是什麼一章節。

2.target屬性可以參閱javascript event.target一章節。

3.srcElement屬性可以參閱javascript event.srcElement一章節。

相關文章