$(document).ready(function(){
$("input[id^='ele_']").click(function(event){
bindVsDelegate($(event.target).attr("id").substring(4));
});
//测试不同数量元素下,事件绑定和事件委托的耗时情况
function bindVsDelegate(eleSize){
//初始化。效果不明显,注释掉。
//document.getElementById("leftCon").innerHTML = "";
//document.getElementById("rightCon").innerHTML = "";
//准备相应数量的元素
var innerHtml = "<ul>";
for(var i=0; i<eleSize; i++){
innerHtml += "<li>第 "+i+" 个</li>";
}
innerHtml += "</ul>";
document.getElementById("leftCon").innerHTML = innerHtml;
document.getElementById("rightCon").innerHTML = innerHtml;
//事件绑定测试
var bindStart = new Date().getTime();
$("#leftCon").find("li").click(function(){
alert($(this).html());
});
var bindEnd = new Date().getTime();
//事件委托测试
var legateStart = new Date().getTime();
$('#rightCon').delegate('li', 'click', function() {
alert($(this).html());
});
var legateEnd = new Date().getTime();
//显示测试结果
alert(eleSize+" 个元素时,事件绑定耗时:"+(bindEnd-bindStart)+"ms"+"; 事件委托耗时:"+(legateEnd-legateStart)+"ms。");
}
});
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>事件委托和事件绑定示例-速度测试</title>
</head>
<body>
<div id="container" class="clearfix">
<h3>事件委托和事件绑定示例-速度测试</h3>
<div >
<h4>点击按钮,测试不同数量元素时,事件绑定和事件委托的处理时间对比</h4>
<input type="button" id="ele_100" value="100 个元素" />
<input type="button" id="ele_1000" value="1000 个元素" />
<input type="button" id="ele_10000" value="10000 个元素" />
<input type="button" id="ele_100000" value="100000 个元素" />
<span class="extraTips">(注意:在IE8及其更低版本的IE中,大于等于10000个元素时,会有“假死”现象。)</span>
</div>
<div id="left">
<h4>事件绑定的示例</h4>
<div id="leftCon" class="clearfix"></div>
</div>
<div id="right">
<h4>事件委托的示例</h4>
<div id="rightCon" class="clearfix"></div>
</div>
</div>
</body>
</html>