2012-01-19 5 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'); 
    } 
    } 
}); 
}); 

問題は、次のボタン(スパン#のpijlr)である一回。一度クリックすれば、それは思っているし、-490pxにもなりますが、もう一度クリックすると何もしません。変数urechtsを微調整しようとしましたが、-1000pxという数値を増やすと、その限界を超えて動作します。

+0

これは本当に素晴らしい作業デモです。 – adeneo

+0

申し訳ありません、今すぐ作品: – Seltjoek

答えて

2

これはあなたの問題です:

if(variable > urechts) {

variableurechtsは文字列である、あなたは数値的にそれらを比較することはできません。あなたはまた、整数であるurechts/ulinksを変更して、一度だけのparseIntを行うことができ

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

数値を取得するために parseIntを使用して

変更するには、このような何かに行(sで)、

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

固定例:http://jsfiddle.net/jtbowden/sVqNq/5/

編集:これはChromeでは動作しないと指摘されました。これは、明示的に定義されていない場合、初めて呼び出されたときにChromeがleft()値として "auto"を返すためです。単純に、の場合はleft: 0pxをCSSに追加してください。それ以外の場合は、コード内で "auto"をチェックする必要があります。

+0

ええ、それはまったく動作しませんでした – Tom

+0

それは私にとっては奇妙な、トムの仕事です。しかし、parseintは-980pxの値で-980に変換しますか? – Seltjoek

+0

'parseInt'は最初に見つかった整数です。したがって、-980です。 urechtsを他のものに使用しない場合は、-980に定義するだけで、parseIntを2回呼び出す必要はありません。 –