先来一个基本的例子
使用addEventListener
此题也可以不使用闭包来实现
//另外一种使用事件代理的方式 //没有使用闭包var ul = document.querySelector('#ul1');var lis = document.querySelectorAll('#ul1 .li-ele');var lisArr = [];for( i= 0; i< lis.length; i++){ lisArr.push(lis[i]);}//PS 注意 不能直接用lis.indexOf //它是 NodeList 是类数组 没有 indexOf 方法ul.addEventListener('click', function(e){ var target = e.target; console.log(lisArr.indexOf(target)); }, false);
=========更新==========
然而上面的方式还是太笨了 下面这个既可以不用闭包也可以绑定上对应的事件
var doc = document;var list = doc.querySelectorAll('ul li');[].forEach.call(list, function(ele, index){ ele.addEventListener('click', function(){ console.log(index); }, false);});