2

eachjqueryループの結果を別のループ内に連結したいのですが、期待した結果が得られません。

$.each(data, function () {
            counter++;
            var i = 0;
            var singlebar;
            var that = this;
            tableRow = '<tr>' +
            '<td>' + this.foo + '</td>' + //<---- should terminate this instead
            $.each(this.bar, function(){
                singlebar = '<td>' + that.bar[i].baz + '</td>';
                tableRow += singlebar;
                console.log(singlebar); // outputs "<td>the correct data</td>"
            });
            '</tr>';

            $(tableRow).appendTo('#mainTable > tbody');
});

ネストされた内部の部分eachは、返される文字列に追加されません。

コンソールで期待される結果を得ることができconsole.log(singlebar)ますが、プライマリeachループ内でそれらの結果を連結することはできません。

私も試しました:

        $.each(this.bar, function(){
            tableRow += '<td>' + that.bar[i].baz + '</td>';
        });

これも、目的のコンテンツを追加しません。

eachこのネストされたデータを繰り返し処理し、プライマリステートメントが構築しているテーブルの真ん中に追加するにはどうすればよいですか?


解決策(sushanth reddy に感謝)

このような方法で連結しようとし続けるべきではありませんでした。tableRow一度にすべてではなく、文字列の各セクションを作成時に追加する必要がありました。もっと似たもの:

            tableRow = '<tr>' +
            '<td>' + this.foo + '</td>';

            $.each(this.bar, function(){
                singlebar = '<td>' + that.bar[i].baz + '</td>';
                tableRow += singlebar;
            });

            tableRow += '</tr>';
4

3 に答える 3

2

あなたは間違った場所に戻っています..これを試してください

var counter = 0;
var tableRow = '';
$.each(data, function () {
    counter++;
    var i = 0;
    var singlebar;
    var that = this;
    tableRow = '<tr>' +
    '<td>' + this.foo + '</td>' +
    $.each(this.bar, function(){
        singlebar = '<td>' + that.bar[i].baz + '</td>';
        tableRow += singlebar;
    });
    tableRow +=  '</tr>';

    $(tableRow).appendTo('#mainTable  tbody');
}); 

この例のFIDDLEを確認してください

また、追加する前に、tableタグとtbodyタグがあることを確認してください。

于 2012-09-20T21:35:40.903 に答える
0

これを試して

    $.each(data, function () {
                counter++;
                var i = 0;
                var singlebar;
                var that = this;
                tableRow = '<tr>' +
                '<td>' + this.foo + '</td>';
                $.each(this.bar, function(){
                    singlebar = '<td>' + that.bar[i].baz + '</td>';
                    tableRow = tableRow + singlebar;
                });
                tableRow = tableRow + '</tr>';


    });
return tableRow;
于 2012-09-20T21:35:13.860 に答える
0
$.each(data, function () {
            counter++;
            var i = 0;
            var singlebar;
            var that = this;
            var tableRow = '<tr>' +
            '<td>' + this.foo + '</td>';
            $.each(this.bar, function(){
                singlebar = '<td>' + that.bar[i].baz + '</td>';
                tableRow = tableRow + singlebar;
            });
            tableRow = tableRow + '</tr>';

            return tableRow;
});
于 2012-09-20T21:36:55.137 に答える