2010-05-09 3 views
3

Я написал вот так. После отправки клика цикл не вызывает. Но я видел, что значение есть, но длина массива показывает «0». (См. Рисунок). Почему он не входит в цикл? и $ ('# myVisibleRows'). val (idsString); становясь «пустым».Длина массива равна нулю в jQuery

$(document).ready(function() { 

     $('tr[@class^=RegText]').hide().children('td'); 

     var list_Visible_Ids = []; 
     var idsString, idsArray; 
     alert($('#myVisibleRows').val()); 
     idsString = $('#myVisibleRows').val(); 
     idsArray = idsString.split(','); 
     $.each(idsArray, function() { 
      if (this != "") { 
       $('#' + this).siblings(('.RegText').toggle(true)); 
       window['list_Visible_Ids'][this] = 1; 
      } 
     }); 
     $('tr.subCategory1') 
     .css("cursor", "pointer") 
     .attr("title", "Click to expand/collapse") 
     .click(function() { 
      //this = $(this); 
      $(this).siblings('.RegText').toggle(); 

      list_Visible_Ids[$(this).attr('id')] = $(this).css('display') != 'none' ? 1 : null; 
      alert(list_Visible_Ids[$(this).attr('id')]) 
     }); 
     $('#form1').submit(function() { 

      idsString = ''; 
      $.each(list_Visible_Ids, function(key, val) { 
       alert(val); 
       if (val) { 

        idsString += (idsString != '' ? ',' : '') + key; 
       } 
      }); 
      $('#myVisibleRows').val(idsString);     
      form.submit(); 
     }); 
    }); 

alt text

+0

window ['list_Visible_Ids'] ?? Это выделяется в другой среде –

+0

Что происходит, когда вы объявляете его как объект? 'var list_Visible_Ids = {};', именно так вы обращаетесь к нему в настоящее время. –

ответ

1

, наконец, он работает со мной, как это.

for (var index in list_Visible_Ids) { 
       idsString += (idsString != '' ? ',' : '') + index; 
      } 
0

$ .each предназначен для перечисления пар ключ/значение в ОБЪЕКТОВ, а не массивы - в качестве Ник Craver намекают.

Смежные вопросы