js事件委託

一個ul列表,裏邊有一個1000個li元素,如何爲這1000個li元素添加click事件?

<ul id="list">
	<li>1</li>
	<li>2</li>
	<li>3</li>
	<li>4</li>
	<li>5</li>
	<li>6</li>
	<li>7</li>
	<li>8</li>
	..........
	<li>1000</li>
</ul> 

(function(){
	var a=document.getElementById('list');
	var b=a.getElementsByTagName('li');
	for(var i=0;i<b.length;i++){
	b[i].addEventListener('click',function(e){
	var c = e.target; 
	alert(c.innerHTML);
	    },false);
}
})();
首先想到的是,for循環爲每一個li元素綁定click事件,但是現在有1000個li元素就會對頁面的性能造成很大的影響。所以,我們要採用事件委託。具體來說,事件委託就是事件目標自身不處理事件,而是把處理任務委託給其父元素或者祖先元素,甚至根元素(document)。

(function(){
    var a=document.getElementById('list');
    a.addEventListener('click',function(e){
    var b = e.target; 
    alert(b.innerHTML);
    },false);
})();


參考文章:http://www.ituring.com.cn/article/467

http://www.cnblogs.com/super-d2/archive/2011/10/31/2230602.html

作爲閉包使用的

(function(){ 
//獨立作用域 
})(); 
已知ab兩個有序數組,a數組長度m,b數組長度n,請最多循環m n次找出a,b數組中相同的元素
對“事件處理程序過多”問題的解決方案就是事件委託。事件委託利用了事件冒泡,只指定一個事件處理程序,就可以管理某一類型的所有事件。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章