#javascript #jquery #settimeout #carousel
#javascript #jquery #settimeout #карусель
Вопрос:
У меня есть следующий код http://jsfiddle.net/4wEbj/2 /
Я хочу иметь возможность иметь два экземпляра карусели на одной странице.
Как я могу изменить свой JS? Я просто не эксперт в JS. Я попробовал несколько вещей, во-первых:
function runCarousel(id){
}
Также я использовал один глобальный счетчик, как я могу локализовать его, чтобы просмотреть все изображения?
Создание моего скрипта runCarousel для приема параметров, подобных этому http://jsfiddle.net/4wEbj/3 /
Но он плохо загружается. Кто-нибудь может мне помочь? Заранее спасибо!
Ответ №1:
Чтобы получить два экземпляра, вам понадобятся два раздела карусели на странице. В этой скрипке я только что скопировал ваш div-файл-оболочку для карусели и вставил его под первым. Я изучаю вторую, которую вы предоставили, но похоже, что приведенная ниже скрипка делает то, что вы хотите.
две карусели: http://jsfiddle.net/4wEbj/4 /
я скопировал следующий div и вставил его:
<div class="jcarousel-wrapper">
Комментарии:
1. Но затем он отображает пустой холст. Я этого не хочу.
2. Я хочу, чтобы он мог перебирать все изображения на обеих каруселях, и в любое время на обеих каруселях не должно быть пустой карусели
3. ключ — img_counter, чтобы все было правильно.. Однако я не могу изменить код, чтобы сделать это так .. Прямо сейчас img_counter является глобальным, и именно поэтому он не может работать для обеих каруселей так, как я хочу..
4. Я заставил его работать с двумя отдельными запусками функции carousel, но не смог заставить его работать, передав идентификатор изображения. Я попробую еще раз сегодня, когда у меня будет немного свободного времени.
5. Я уже решил это. Большое спасибо. Скоро опубликую свое решение.
Ответ №2:
Создайте для карусели вот так:
var Carousel = {
imgCounter : 0,
delay : 5000,
id : '',
runCarousel : function (){
var that = this;
var done = 0;
if(that.id!=undefined amp;amp; that.id!=''){
var img_len = $('#' that.id " .jcarousel ul li img").length;
$('#' that.id " .jcarousel ul li img").each(function(){
if($(this).css('display')=='block' amp;amp; done==0){
that.imgCounter ;
if(that.imgCounter == img_len){
$(this).css('display','none');
that.imgCounter = 0;
$('#' that.id " .jcarousel ul li img").css('display','none');
$('#' that.id " .jcarousel ul li").find('img:eq(0)').css('display','block');
} else {
$(this).css('display','none');
$(this).parent().next().find('img').css('display','block');
}
done = 1;
}
});
setTimeout(function() {
that.runCarousel();
}, that.delay);
}
}
}
и создание экземпляра следующим образом:
var carousel1 = Object.create(Carousel);
carousel1.id = "showSlider1";
carousel1.delay = 5000;
carousel1.runCarousel();
var carousel2 = Object.create(Carousel);
carousel2.id = "showSlider2";
carousel2.delay = 5000;
carousel2.runCarousel();
решит проблему.