2012-02-21 142 views
0

我有一個函數,通過操作左邊的值來水平滑動div。一切運作良好我可以讓它左右滾動就好,我遇到的問題是我的if語句並停止滾動。我正在測量div的左邊值,我知道它應該根據div和屏幕測量移動的下限和上限。但即使左邊的值遠遠大於任一方向的極限,它也不會停止滾動。此外,第一個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

整個生命和股利的滑動工作正常,我更關心的是獲得的功能和if語句實際上停止工作時,條件不具備了。我讓它設置爲在滾動時顯示左側值,並且變量根據滾動方式發生變化。問題是一旦左值超過了指定的最大值或最小值,即使您離開熱點並返回,它也會繼續滾動。 – user1223896 2012-02-22 14:36:41

+0

這就是爲什麼我建議使用jquery動畫功能爲您製作動畫。可能有一些事情你可能沒注意到(包括轉換css像素值(你可以用parseInt做),你的間隔可能不會被重置,css值在你不想要的時候會被改變,等等)。 – 2012-02-23 01:13:54

0

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

不是有效的JavaScript。

您的意思是布爾值AND

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

即數學符號:lowerLimit <= leftPosition <= upperLimit