给ul中的li添加事件的多种方法
这是一个常见,而且典型的前端面试题
<ul> <li>11111</li> <li>22222</li> <li>33333</li> </ul>
错误方式:
var len=lis.length; for(var i=0;i<len;i++){ $(lis[i]).click(function (){ alert(i); }) }
正确方式一(利用jq中的each)
var lis=$("ul>li"); $.each(lis,function(index,element){ $(element).click(function (){ alert(index); }) //这样就添加了天门的坐标 })
正确方式二(闭包)
for(var i=0;i<len;i++){ (function (index){ $(lis[index]).click(function (){ alert(index); //这种方式也是可以滴呀 }) })(i) }
正确方式三(动态的该对象添加属性)
var len=lis.length; for(var i=0;i<len;i++){ lis[i].indexValue=i; $(lis[i]).click(function (){ alert(this.indexValue); //这样也是可以的 }) }