Динамически добавлять функцию щелчка в цикле for с помощью замыкания - PullRequest
1 голос
/ 19 декабря 2011

Я пытаюсь создать динамический аккордеон. Моя проблема в том, что я не могу получить ссылку на переменную i внутри цикла for. Я знаю, что это проблема масштаба, но я думал, что это закрытие поможет ... Пожалуйста, кто-нибудь поможет мне, потому что это сводит меня с ума.

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 Ответ

4 голосов
/ 19 декабря 2011

Еще лучше:

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

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