У меня сейчас самый большой мозг!
Мне нужно, чтобы добавить i
количество слайдов (который может быть пустым), но они должны иметь определенные классы для внутренних див, и конкретный идентификатор, состоящий из i
во имени горок.
<ul class="bjqs"><!-- Target This -->
<li id="slide0"><!-- Append these -->
<div class="center"><!-- Append these -->
<span class="author"></span><!-- Append these -->
<span class="time"></span><!-- Append these -->
</div>
<div class="image"></div><!-- Append these -->
</li>
<li id="slide1"><!-- Append these -->
<div class="center"><!-- Append these -->
<span class="author"></span><!-- Append these -->
<span class="time"></span><!-- Append these -->
</div>
<div class="image"></div>
</li>
<li id="slide2">... etc
</ul>
Возможно, базовый for loop
будет работать...?
var slideCount = 20;
for(var i = slideCount-1;i>=0;i--){
$('ul.bjqs').after('<li id="slide'+i+'"><div class="center"><span class="author"></span><span class="time"></span></div><div class="image"></div></li>');
}
(Ну, это работает... но есть ли более чистый способ?)
Это зависит от необходимости и того, как вы предпочитаете это делать.
Если у вас уже есть слайд, на данный момент вам нужно создать остальные, вы можете использовать метод clone
:
var slideCount = 20;
for(var i = slideCount-1;i>=0;i--){
$('ul.bjqs').after($('#slide0').clone().attr('id', 'slide'+i));
}
Иначе ваш метод не так уж плох. Мне лично не нравится выводить html с помощью js, так как у вас будет несколько файлов для поддержки, если вам нужно изменить макет (по крайней мере, html и js файл). Хорошим способом может быть клонирование (см. Выше) скрытого пустого слайда в начале, а затем удаление его после генерации других.
более чистым способом было бы использовать библиотеку двусторонней привязки, такую как angular.js
HTML
<li ng-repeat="slide in slides" id="slide{{$index}}">
<div class="center">
<span class="author">{{slide.author}}</span>
<span class="time">{{slide.time}}</span>
</div>
<div class="image"></div>
</li>
JS
$scope.slides=[{author:"Chris",time:"Tues"},{author:"Owen",time:"Wed"}];