2

我想将一个 jqueryeach循环的结果连接到另一个循环中,但没有得到我期望的结果。

$.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 回答