Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 19.05.2013, 22:29
Новичок на форуме
Отправить личное сообщение для webiex Посмотреть профиль Найти все сообщения от webiex
 
Регистрация: 19.05.2013
Сообщений: 3

Несколько каруселей на странице
Здравствуйте, встала проблема на странице присутствует несколько каруселей и работают криво при нажати на кнопку вперед или назад срабатывают все карусели подскажете как побороть чтобы блок карусели работал отдельно и при нажатии сопутствующей кнопки срабатывала только та карусель на которую нажали а не все сразу

Код 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);
    }


Заранее все благодарен за любой ответ
Ответить с цитированием
  #2 (permalink)  
Старый 20.05.2013, 09:21
Профессор
Отправить личное сообщение для mta88 Посмотреть профиль Найти все сообщения от mta88
 
Регистрация: 16.05.2013
Сообщений: 229

конечно срабатывают обе карусели, ведь функции "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();
}


ну и так далее

Последний раз редактировалось mta88, 20.05.2013 в 09:23.
Ответить с цитированием
  #3 (permalink)  
Старый 20.05.2013, 14:20
Новичок на форуме
Отправить личное сообщение для webiex Посмотреть профиль Найти все сообщения от webiex
 
Регистрация: 19.05.2013
Сообщений: 3

про бывал не получилось карусель перестала работать
Цитата:
для начала я бы просто передал внутрь этих функций ссылку на корень нужной карусели
можете поподробней или на моем примере показать

Последний раз редактировалось webiex, 20.05.2013 в 14:52.
Ответить с цитированием
  #4 (permalink)  
Старый 21.05.2013, 07:04
Профессор
Отправить личное сообщение для mta88 Посмотреть профиль Найти все сообщения от mta88
 
Регистрация: 16.05.2013
Сообщений: 229

я бы посмотрел, но так лениво развертывать полную карусель у себя, тем более у меня нет css. не самому же его придумывать

дайте ссылку со страницей на ваш домен, архив с исходниками или разверните на http://jsfiddle.net
Ответить с цитированием
  #5 (permalink)  
Старый 21.05.2013, 20:44
Новичок на форуме
Отправить личное сообщение для Костин Юра Посмотреть профиль Найти все сообщения от Костин Юра
 
Регистрация: 21.05.2013
Сообщений: 3

Совсем недавно писал подобную штуку..

На мой взгляд, если мы пишем свой велосипед (я, к сожалению, их большой любитель), то нам нужно:
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);
})

Надеюсь, что поможет.

Не ругайте, если что, первый раз на форуме пишу.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
AJAX несколько элементов на странице... myocean AJAX и COMET 2 12.11.2012 12:27
AJAX несколько элементов на странице... myocean jQuery 3 12.11.2012 00:00
Несколько версий JQuery UI на одной странице. Casufi jQuery 2 10.11.2012 15:24
Несколько iframe на странице oblomov86 Events/DOM/Window 3 19.12.2011 12:00
Несколько скрытых аудио-плееров на странице fanks Элементы интерфейса 1 21.02.2011 13:33