2013-04-19 4 views
0

Здесь я нахожусь в цикле jQuery, и все, что я делаю, это сделать строку и добавить ее в div. Очень просто пока?jQuery цикл внутри строки?

Ну, я тоже зацикливаюсь внутри своей петли. Проблема в том, что моя петля внутри моего цикла генерирует точный результат.

Итак, моя первая петля, которую я прокручиваю через некоторые телевизионные каналы, и мой второй цикл, я прокручиваю некоторые телевизионные шоу. Проблема в том, что мои телешоу одинаковы для каждого канала. Довольно тупой кабельной сети?

Как я могу пройти через все ТВ-шоу и присоединить их к правильному телевизионному каналу?

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 --> 

ответ

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 

Демо: Fiddle

+0

ahhh спасибо! – bghouse

1

вам нужно использовать shows=''; внутри первого цикла

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

Вам необходимо опорожнить shows строка для нового channel.But вы не делаешь it.So его добавление к предыдущей строке непрерывно

+0

@bghouse это работает для и в настоящее время – PSR

+0

да спасибо, сэр! – bghouse

Смежные вопросы