本來打算介紹clipboard.js如何使用,卻發現在https://clipboardjs.com介紹中事件委托竟然不知道,于是就有了這篇介紹。
1 事件委托的原理
事件委托是是利用事件的冒泡原理來實現的,從內層元素一層一層往外找,div>ul>li>a;比如給最里面的a加一個click點擊事件,那么這個事件就會一層一層的往外執行,執行順序a>li>ul>div,有這樣一個機制,那么我們給最外面的div加點擊事件,那么里面的ul,li,a做點擊事件的時候,都會冒泡到最外層的div上,所以都會觸發,這就是事件委托,委托它們父級代為執行事件。
2針對dom中已經有的元素舉例
1未使用事件委托
實現功能是點擊li,打印11111:
<body>
<ul id="uli">
<li>1</li>
<li>2</li>
<li>3</li>
<li>4</li>
</ul>
</body>
在我認識事件委托之前,代碼都是這樣寫的,首先要找到ul,然后遍歷li,然后點擊li的時候,又要找一次目標的li的位置,才能執行最后的操作,每次點擊都要找一次li;
<pre>
<script>
window.onload = function () {
var oUl = document.getElementById('uli');
var aLi = oUl.getElementsByTagName('li')
for(i=0;i<aLi.length;i++){
aLi[i].onclick = function () {
console.log('11111');
}
}
}
</script>
</pre>
2使用事件委托
這里用父級ul做事件處理,當li被點擊時,由于冒泡原理,事件就會冒泡到ul上,因為ul上有點擊事件,所以事件就會觸發。大大減少了dom的操作
<pre>
<script>
window.onload = function () {
var oUl = document.getElementById('uli');
oUl.onclick = function () {
console.log('11111');
}
}
</script>
</pre>
參考http://www.cnblogs.com/liugang-vip/p/5616484.html