即时执行函数解决循环绑定事件中的i被更新的问题
aUl.onmouseover = function(){ var oLi = aUl.getElementsByTagName('li'); for(i = 0;i<oLi.length;i++){ (function(i){ oLi[i].onclick = function(){ aUl.removeChild(oLi[i]); } })(i) } }
我们的需求是:有一堆的li,要给li循环的绑定点击事件,点击哪个li就remove掉该li。
传统的做法,是给lifor循环一下,但是这种做法的缺点就是,一直绑定的是最后一个li。因为for循环执行完之后才能去执行onclick事件,所以i一直都会是最后一个li。
利用即时函数可以有效的解决这个问题,