简单的幻灯片效果问题。幻灯片只发生一次

时间:2012-01-19 20:46:44

标签: jquery gallery slide

工作演示CLick

$(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 个答案:

答案 0 :(得分:2)

这是你的问题:

if(variable > urechts) {

variableurechts是字符串,您无法用数字比较它们。

使用parseInt将行更改为类似值,以获取数值:

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

你也可以将urechts / ulinks改为整数,只做一次parseInt:

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

修复示例:http://jsfiddle.net/jtbowden/sVqNq/5/

修改 :有人指出这在Chrome中不起作用。这是因为如果没有明确定义,Chrome会在第一次调用时返回“自动”作为left()值。只需将left: 0px添加到.pol的css即可。否则,您需要在代码中检查“自动”。