Простая проблема с эффектом галереи слайдов.Слайд бывает только один раз - PullRequest
0 голосов
/ 20 января 2012

Рабочая демонстрация Нажмите

$(document).ready(function(e) { 
$('span#pijlr, span#pijll').show();
$('#gallery').css('overflow','hidden');
$('span#pijlr').click(function(e) {
  if (!$('#gallcont').is(':animated')) {
    var slide = 490;
    var variable = $('#gallcont').css('left');
    var urechts = "-980px";
    if(variable > urechts) {
      $('#gallcont').animate({'left': '-=' +slide+ 'px'},'fast','linear');
    }
  }
});
$('span#pijll').click(function(e) {
  if (!$('#gallcont').is(':animated')) {
    var slide = 490;
    var variable = $('#gallcont').css('left');
    var ulinks = "0";
    if(variable < ulinks) {
      $('#gallcont').animate({'left': '+=' +slide+ 'px'},'fast','linear');
    }
  }
});
});

Проблема со следующей кнопкой (span # pijlr).Если я нажму один раз, он сделает это, он подумает и будет тоже -490px, но когда я нажму снова, он ничего не сделает.Я попытался настроить переменные urechts, но когда я увеличу число, скажем, до -1000px, оно будет работать, за исключением того, что оно выходит за пределы.

1 Ответ

2 голосов
/ 20 января 2012

Это ваша проблема:

if(variable > urechts) {

variable и urechts - строки, их нельзя сравнивать численно.

Измените строку (строки) на что-то вроде этого, используя parseInt, чтобы получить числовое значение:

if(parseInt(variable) > parseInt(urechts)) {

Вы также можете изменить urechts / ulinks на целые числа и выполнять parseInt только один раз:

var urechts = "-980px";
if(parseInt(variable) > urechts) { ... }

Фиксированный пример: http://jsfiddle.net/jtbowden/sVqNq/5/

Редактировать : было отмечено, что это не работает в Chrome. Это связано с тем, что Chrome возвращает значение «auto» в качестве значения left() при первом вызове, если оно не было определено явно. Просто добавьте left: 0px к CSS для .pol. В противном случае вам нужно проверить «auto» в вашем коде.

...