即时执行函数解决循环绑定事件中的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。

利用即时函数可以有效的解决这个问题,

原文地址:https://www.cnblogs.com/Jerry-spo/p/6549350.html