2012-01-19 38 views
0

工作演示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它將工作,除了它超出了它的限制。

+0

這是一個非常好的工作演示,你到了那裏? – adeneo

+0

對不起,現在工作:) – Seltjoek

回答

2

這是你的問題:

if(variable > urechts) {

variableurechts是字符串,你不能用數字對它們進行比較。

更改線(S),以這樣的事情,用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()時返回「auto」。只需將left: 0px添加到css的.pol。否則,您需要在代碼中檢查「auto」。

+0

是的,那根本沒有工作 – Tom

+0

這很奇怪,它適用於我湯姆。但是,parseint如何處理值爲-980像素的圖像是否會將其轉換爲-980? – Seltjoek

+0

'parseInt'獲取它找到的第一個整數,因此是-980。如果你沒有使用urechts作爲其他任何東西,你可以將它定義爲-980,而不必調用parseInt兩次。 –