Несколько каруселей на странице
Здравствуйте, встала проблема на странице присутствует несколько каруселей и работают криво при нажати на кнопку вперед или назад срабатывают все карусели подскажете как побороть чтобы блок карусели работал отдельно и при нажатии сопутствующей кнопки срабатывала только та карусель на которую нажали а не все сразу
Код html <div class="carousel1"> <div class="carousel-button-left"><a href="javascript:void(0);"> </a></div> <div class="carousel-button-right"><a href="javascript:void(0);"> </a></div> <div class="shadow-block" style="padding-left:0px;"> <div class="t"><div class="b"><div class="m"><div class="m"> <div class="t"><div class="t"><div class="b"><div class="b"> <div class="carousel-wrapper"> <div class="carousel-items"> <div class="carousel-block"> <img src="images/1.jpg" alt="" /> </div> <div class="carousel-block"> <img src="images/2.jpg" alt="" /> </div> <div class="carousel-block"> <img src="images/3.jpg" alt="" /> </div> <div class="carousel-block"> <img src="images/4.jpg" alt="" /> </div> <div class="carousel-block"> <img src="images/5.jpg" alt="" /> </div> <div class="carousel-block"> <img src="images/6.jpg" alt="" /> </div> <div class="carousel-block"> <img src="images/7.jpg" alt="" /> </div> <div class="carousel-block"> <img src="images/8.jpg" alt="" /> </div> </div> </div> </div></div> </div></div></div> </div></div></div> </div> </div> <div class="carousel2"> <div class="carousel-button-left"><a href="javascript:void(0);"> </a></div> <div class="carousel-button-right"><a href="javascript:void(0);"> </a></div> <div class="shadow-block" style="padding-left:0px;"> <div class="t"><div class="b"><div class="m"><div class="m"> <div class="t"><div class="t"><div class="b"><div class="b"> <div class="carousel-wrapper"> <div class="carousel-items"> <div class="carousel-block"> <img src="images/1.jpg" alt="" /> </div> <div class="carousel-block"> <img src="images/2.jpg" alt="" /> </div> <div class="carousel-block"> <img src="images/3.jpg" alt="" /> </div> <div class="carousel-block"> <img src="images/4.jpg" alt="" /> </div> <div class="carousel-block"> <img src="images/5.jpg" alt="" /> </div> <div class="carousel-block"> <img src="images/6.jpg" alt="" /> </div> <div class="carousel-block"> <img src="images/7.jpg" alt="" /> </div> <div class="carousel-block"> <img src="images/8.jpg" alt="" /> </div> </div> </div> </div></div> </div></div></div> </div></div></div> </div> </div> Код js
$(".carousel-button-right").live('click',function(){
right_carusel();
});
$(".carousel-button-left").live('click',function(){
left_carusel();
});
function left_carusel(){
var block_width = $('.carousel-block').width() + 20;
$(".carousel-items .carousel-block").eq(-1).clone().prependTo(".carousel-items");
$(".carousel-items").css({"left":"-"+block_width+"px"});
$(".carousel-items").animate({left: "0px"}, 200);
$(".carousel-items .carousel-block").eq(-1).remove();
}
function right_carusel(){
var block_width = $('.carousel-block').width() + 20;
$(".carousel-items").animate({left: "-"+ block_width +"px"}, 200);
setTimeout(function () {
$(".carousel-items .carousel-block").eq(0).clone().appendTo(".carousel-items");
$(".carousel-items .carousel-block").eq(0).remove();
$(".carousel-items").css({"left":"0px"});
}, 300);
}
Заранее все благодарен за любой ответ |
конечно срабатывают обе карусели, ведь функции "left_carusel" и "right_carusel" не различают их
для начала я бы просто передал внутрь этих функций ссылку на корень нужной карусели а внутри находил бы подходящих потомков с помощью метода "children"
$(".carousel-button-left").live('click',function(){
left_carusel($(this).parent());
});
function left_carusel(core){
var block_width = $('.carousel-block').width() + 20;
core.children(".carousel-items .carousel-block").eq(-1).clone().prependTo(core.children(".carousel-items"));
core.children(".carousel-items").css({"left":"-"+block_width+"px"});
core.children(".carousel-items").animate({left: "0px"}, 200);
core.children(".carousel-items .carousel-block").eq(-1).remove();
}
ну и так далее |
про бывал не получилось карусель перестала работать
Цитата:
|
я бы посмотрел, но так лениво развертывать полную карусель у себя, тем более у меня нет css. не самому же его придумывать
дайте ссылку со страницей на ваш домен, архив с исходниками или разверните на http://jsfiddle.net |
Совсем недавно писал подобную штуку..
На мой взгляд, если мы пишем свой велосипед (я, к сожалению, их большой любитель), то нам нужно: 1. написать две функции: а) листание по кнопке влево; б) листание по кнопке вправо. 2. Вёрстка одной карусели должна выглядеть примерно так: <div class='carusel_container'> <div class='carousel_slides_box'> <div class='carousel_slide active'> //Содержимое слайда </div> <div class='carousel_slide'> //Содержимое слайда </div> <div class='carousel_slide'> //Содержимое слайда </div> </div> <div class='carousel_nav'> <span class='prev_slide_button'>Left</span> <span class='next_slide_button'>Right</span> </div> </div> 3. Пишем обработчики для двух селекторов: $('.prev_slide_button').click(function(){ //Вызов функции мотающей слайд назад }) $('.next_slide_button').click(function(){ //Вызов функции мотающей слайд вперёд }) А чтобы работало конкретно для одной карусели, нам нужно просто взять $(this) при клике и передать его в соответствующую функцию, а там получить главного родителя нашей карусели, то есть carusel_container, ну а дальше выполнять необходимые манипуляции со слайдами. Например, так: $('.prev_slide_button').click(function(){ show_prev_slide($this); }) Надеюсь, что поможет. Не ругайте, если что, первый раз на форуме пишу. |
| Часовой пояс GMT +3, время: 18:07. |