2013-04-19 1 views
0

Я пытаюсь создать пользовательскую карусель и он уже имеет следующие особенности:Как отключить метод анимации jQuery в конце div?

  1. Вы можете двигаться влево и вправо с помощью мыши или прикосновение на мобильной/таблетке.
  2. Вы можете перемещаться влево или вправо с помощью кнопок.

Однако проблема заключается в том, что кнопки не деактивируются после достижения конца div. Вместо этого все держится навсегда. Смотрите рисунок ниже:

enter image description here

Посмотрите на jsFiddle: http://jsfiddle.net/vnkRw/2/

$("#left").click(function() { 
    $(".wrapper").stop(true, true).animate({left: "-=125px"}, 500); 
}); 
$("#right").click(function() { 
    $(".wrapper").stop(true, true).animate({left: "+=125px"}, 500); 
}); 

Как я могу отключить кнопки один раз конец достигается? Например, когда здесь:

enter image description here

Левая кнопка следует отключить, так как больше нет DIV, чтобы показать.

И, конечно, то же самое на право:

enter image description here

Цель: Неактивно кнопки, когда конец достигается.

+0

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

+0

Какой метод я могу использовать для деактивации кнопки? Я борюсь с изучением jQuery, но я собираюсь попробовать так же, как я изучил CSS, просто борюсь! –

+0

Может быть, просто спрятать? $ ('# your-button'). Hide() или .fadeOut (500), чтобы анимировать его? Если вы хотите по-настоящему отключить его, вы можете добавить свойство disabled. $ ('# your-button'). Prop ('disabled', true); –

ответ

2

что-то вроде

pos=slides=$(".wrapper > div").length; 

    $("#left").click(function() { 
    if(pos>3){$(".wrapper").stop(true, true).animate({left: "-=125px"}, 500);pos--;} 
    }); 

    $("#right").click(function() { 
    if(pos<slides){$(".wrapper").stop(true, true).animate({left: "+=125px"}, 500);pos++;} 
    }); 

    $('.carousel').kinetic(); 
+0

Отлично! Но по какой-то причине кинетический плагин не работает с этим. –

+0

Но я положил его в функцию готовности документа, и теперь он работает! Awesomeness! –

+0

Но, когда divs ave двигался полностью влево, кинетический плагин не работает. Однако, когда divs перемещаются полностью вправо, плагин работает нормально. Есть идеи? –

1

Есть некоторые вещи, которые необходимо учитывать при выполнении карусели, я просто, чтобы вы начали.

  1. Будут ли все элементы быть такой же ширины
  2. Будут ли все элементы имеют одинаковые поля
  3. ли вышеуказанные вещи быть переменной

Это мы исходим из того, что все вещи выше статичны, идея для прокрутки вправо, чтобы не произошло, если левая позиция wrapper равна 0. И это легкая часть. Для другого направления вы должны взять количество всех предметов, вычесть количество видимых элементов (в вашем случае 3), умножить их на их ширину (включая маржу), и все это, при условии, что все элементы имеют одинаковую ширину и с одинаковым запасом .. и в конце вы должны умножить это на -1, потому что ваше wrapperleft положение становится отрицательным числом. И в конце, если wrapper достиг этой позиции, вы не должны ее прокручивать.
Визуализации вышеприведенной мини-стена текста:

http://jsfiddle.net/vnkRw/4/

+0

Вы правы, поэтому он работает в одном направлении с другим ответом, а не для полного левого расширения , Спасибо! –