2012-02-21 128 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