0

リスト内の要素の数をループし、情報を取得してから別の div に入れるスクリプトの一部があります。何らかの理由で、最初の各ループはそのインデックスでカウントされません。これを行うためにいくつかの異なる方法を試しましたが、どれも機能していないようです。

ここにスクリプトがあります:

//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>"
            );
        });
    });

}

カウントアップして、作成された div のそれぞれに最後の番号から番号を付けて名前を付けるようにする必要があります.

4

1 に答える 1

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);
    });
});
于 2013-06-22T19:31:53.843 に答える