2012-02-21 29 views
0

divを左に操作することによってdivを水平方向にスライドさせる関数があります。すべてがうまくいきます。私はそれをスクロールさせることができます。問題は、私が思うif文です。私はdivの左の値を測定しており、divとscreenの測定値に基づいて動かすべき下限と上限を知っています。しかし、左の値がいずれの方向の限界よりはるかに大きい場合でも、スクロールを止めることはできません。また、最初のif文は、パネルが隠れていてスクロールする必要があるかどうかをテストします。これは、panelsWidthとportWidthの変数が何であるかを調べます。変数が更新されていないのか、何か、何か提案がありますか?早めにありがとう。JQuery ifステートメント条件

jQueryのコード

function portfolioSlider() { 

var portWidth = $(window).width()-440; 
var panelsWidth = panels * 221; 
var portDifference = panelsWidth - portWidth; 

if (panelsWidth < portWidth) { 
} 

else if(panelsWidth > portWidth) { 

    var leftPosition = $('#web').css('left').replace(/[^-\d\.]/g, ''); 
    var upperLimit = 220; 
    var lowerLimit = 220 - portDifference; 
    var hoverInterval; 

    if(leftPosition >= lowerLimit, leftPosition <= upperLimit) { 

     $(".arrow_right").css('display','block').css('opacity','1') 
     $(".arrow_left").css('display','block').css('opacity','1')   
     $(".arrow_right").hover(
      function() { 
       hoverInterval = setInterval(
       function() { 
        $('#web').css('left','-=2'); 
        leftPosition = $('#web').css('left').replace(/[^-\d\.]/g, ''); 
       },10); 
      }, 
      function() { 
       clearInterval(hoverInterval); 
      } 
     ); 
     $(".arrow_left").hover(
      function() { 
       hoverInterval = setInterval(
       function() { 
        $('#web').css('left','+=2'); 
        leftPosition = $('#web').css('left').replace(/[^-\d\.]/g, ''); 
       },10); 
      }, 
      function() { 
       clearInterval(hoverInterval); 
      } 
     );   
    }  
    else { 
    }  
}; 
}; 

portfolioSlider() 

HTMLが正常に動作し、その中に画像パネルとそのわずかのdiv、本当に無関係です。もう一度何か提案をいただきありがとうございます。

答えて

0

なぜjQuery.animate()を使用しないのですか?あなたは同じように簡単に

$(".arrow_right").hover(
    function() { this.animate("left", animateTo); }, 
    function() { this.animate("left", animateFrom); } 
); 
+0

全体アニメイトとdiv要素の滑りが正常に動作し、私は文の機能を得ることとしている場合より多くの心配、実際の条件が満たされていないときに動作を停止するにはもう私はスクロールされ、変数がスクロールしていた方法に応じて変化していたので、左の値を表示するようにセットアップしました。問題は、一度左の値が指定された最大値または最小値を過ぎると、ホットスポットから離れて戻ってもスクロールし続けることです。 – user1223896

+0

そのため、jqueryのアニメーション機能を使用してアニメーションを行うことをお勧めします。あなたが気づいていないかもしれない事がたくさんあるかもしれません(あなたはparseIntでできるcssピクセル値の変換を含む)、インターバルがリセットされない、CSS値が変更されたくないなど)。 –

0

この

if(leftPosition >= lowerLimit, leftPosition <= upperLimit) { 

が有効なJavaScriptでないような何かを行うことができます。

ブール値を意味しましたか?

if(leftPosition >= lowerLimit && leftPosition <= upperLimit) { 

すなわち、数学的表記で:lowerLimit <= leftPosition <= upperLimit