0

在这里,我在一个 jQuery 循环中,我所做的只是创建一个字符串并将其附加到一个 div 中。到目前为止很简单吧?

好吧,我也在循环内循环。问题是我的循环内的循环正在生成完全相同的结果。

所以我的第一个循环是循环播放一些电视频道,第二个循环是循环播放一些电视节目。问题是我的电视节目对于每个频道都是一样的。相当愚蠢的有线网络对吧?

如何循环播放所有电视节目并将它们附加到正确的电视频道?

shows='';
// loop through the tv channels
$(playlist).each(function(i,value){


// loop through the tv shows
$(value.videos).each(function(i,value){
    shows += '<div class="show"><a href="#"><p>'+tv show+'</p></a></div>';
}); end tv show loop

string = '<div class="channel">'+
            '<h1>value.name</h1>'+
            '<div class="shows">'+shows+'</div>'+
        '</div>';


$(string).appendTo('#streams');


}); // end tv chanel loop

我希望 html 输出看起来像什么

<div class="channel">
<h1>channel name</h1>
<div class="shows">
    <div class="show"><a href="#"><p>show name</p></a></div>
    <div class="show"><a href="#"><p>show name</p></a></div>
    <div class="show"><a href="#"><p>show name</p></a></div>
</div>

<!-- repeat again -->
4

2 回答 2

1

你需要shows='';在第一个循环中使用

// loop through the tv channels
$(playlist).each(function(i,value){
shows='';
........
});

您需要shows为新频道清空字符串。但您没有这样做。所以它不断地附加到前一个字符串

于 2013-04-19T04:12:41.477 回答
1

有多个问题

  1. 变量shows需要在每个playlist循环中重置
  2. value.name是一个变量值,因此不能作为字符串添加
  3. tv show可能必须更改为tv.show

尝试

// loop through the tv channels
$(playlist).each(function(i, value) {
    var shows = '';

    // loop through the tv shows
    $(value.videos).each(function(i, tv) {
        shows += '<div class="show"><a href="#"><p>' + tv.show
                + '</p></a></div>';
    }); // end tv show loop

    string = '<div class="channel">' + '<h1>' + value.name + '</h1>'
            + '<div class="shows">' + shows + '</div>' + '</div>';

    $(string).appendTo('#streams');

}); // end tv chanel loop

演示:小提琴

于 2013-04-19T04:14:40.180 回答