2013-06-22 2 views
0

У меня есть часть в моем скрипте, где она проходит через количество элементов в списке и захватывает информацию, а затем помещает ее в другой div. По какой-то причине первый цикл не будет подсчитывать свой индекс. Ive попробовал несколько способов сделать это, но, похоже, никто не работает.JQuery Каждый индекс остается в 0

здесь сценарий:

//check each Item for a List 
if ($(obj).has('> ul')) { 

    // Second Level Lists 
    $(obj).find('> ul').each(function (index, obj) { 

     // Create Second Level Divs 
     baseElement.append(
      '<div class="level" id=' + index + 
      ' style="color:' + settings.startColor + ';background:' + 
      settings.startBg +';font-size:' + settings.baseFont + 
      'px;position:absolute;width:100%;height:100%;"></div>' 
     ); 

     // Second Level List Items 
     $(obj).find('> li').each(function (i, obj) { 
      $('.level#2').append(
       "<span>" + 
       $(obj).find('>:first-child').text() + 
       "</span>" 
      ); 
     }); 
    }); 

} 

мне нужно сделать так, что подсчитывает и имена каждого из созданных ДИВ это число по сравнению с последним ... Ive взял мой мозг и не знаю, что может Неправильно.

+0

может использовать '.children ('ul')' вместо '.find ('> ul')'? –

+0

Как и в стороне, 'id = '+ index +'' не является допустимым идентификатором HTML (не может начинаться с числа). Вы также переопределяете 'obj' в этой области (пару раз). –

+2

@BradChristie: Это действительно в HTML5. – Blender

ответ

3

Ваша внутренняя петля добавляется только к .level#2, что, вероятно, не то, что вы хотите. Если я правильно читаю ваш вопрос, это должно сработать:

$(obj).children('ul').each(function(index) { 
    var $parent = $('<div>', { 
     'class': 'level', 
     id: index, 
     css: { 
      color: settings.startColor, 
      background: settings.startBg, 
      fontSize: settings.baseFont + 'px', 
      position: 'absolute', 
      width: '100%', 
      height: '100%' 
     } 
    }).appendTo(baseElement); 

    $(this).children('li').each(function() { 
     $('<span>', { 
      text: $(this).children().first().text() 
     }).appendTo($parent); 
    }); 
}); 
+0

+1 для просто красивого кода. Это любовь/ненависть, но мне нравится параметр объекта для инициализации объектов jQuery. ; p –

+0

@BradChristie: Я просто посмотрел на документацию для него, и, по-видимому, он принимает метод * any * как свойство, поэтому вы также можете сделать '$ ('', {text: 'foo', empty: true}) .appendTo ('body'); 'и диапазон будет опустошен. Это довольно круто. – Blender

+0

@Blender O_O ... –