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数组中相同的元素
对“事件处理程序过多”问题的解决方案就是事件委托。事件委托利用了事件冒泡,只指定一个事件处理程序,就可以管理某一类型的所有事件。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值