使用闭包在for循环中动态添加单击函数

时间:2011-12-19 15:47:30

标签: for-loop click closures jquery

我正在努力创造一个动态的手风琴。我的问题是我似乎无法在for循环中获得对i变量的引用。我知道这是一个范围问题,但我认为这个关闭会起作用....请有人帮助我,因为这让我完全疯了。

jQuery(function(){

  var tables = jQuery('table');
  var tableHeadings = jQuery('h3');

  for(i =0 , ii = tableHeadings.length; i < ii; i++){
     (function(){ 

        var index = i;
        tables.eq(index).addClass('table-' + index);

        tableHeadings.eq(index).click(function(){   
            tables.eq(index).slideToggle(); 
        });

      })();
    }  
});

1 个答案:

答案 0 :(得分:4)

更好的是:

tableHeadings.each(function(index, element) {
  tables.eq(index).addClass('table-' + index);

  tableHeadings.eq(index).click(function() {   
    tables.eq(index).slideToggle(); 
  });
});