2014-03-25 109 views
0

不工作我有依賴於父DIV從窗口的頂部是X像素運行的函數...如果else語句中的jQuery

 if (chartContainer <= 700) { 

      $('.firstChart').addClass('rotateLeft'); 
      $('.firstChart').animate({'left': 30}, 600); 
      $('.secondChart').addClass('rotateRight'); 
      $('.secondChart').animate({'right': 30}, 600); 

     } else if (chartContainer > 700) { 

      $('.firstChart').removeClass('rotateLeft'); 
      $('.firstChart').animate({'left': -300}, 600); 
      $('.secondChart').removeClass('rotateRight'); 
      $('.secondChart').animate({'right': -300}, 600); 

     } 

我的功能添加類細,但其如果我刪除了我的else語句,第一個代碼塊中的add類和動畫完美運行,任何人都可以看到任何錯誤的語法明智嗎?

------- JS小提琴---------

http://jsfiddle.net/Gm9Fv/1/

+2

該元素是否有位置(除靜態)和左值設置爲開頭。 – adeneo

+0

只是想:可能你必須在'else'語句中將'300'改成'30'。 –

+2

我可以看到錯誤的邏輯明智:如果A,否則如果不是A'。 –

回答

0

你們是不是要達到這樣的事: http://jsfiddle.net/8QFzd/2/

IE 2塊了屏幕(左和右隱藏),當您滾動接近他們,他們COMME到屏幕的中心?

var state = 1 ; 

$(window).on('scroll', function (e) { 

    var scrollTop = $(window).scrollTop() ; 
    var chartContainer = ($('.chartContainer').offset().top - scrollTop); 

    console.log(chartContainer); 

    if (chartContainer <= 200) { 
     if (state != 1) 
     { 
      console.log('<= 200, add Class & animate') ; 
      state = 1 ; 
      $('.firstChart').addClass('rotateLeft'); 
      $('.firstChart').stop().animate({ 
       'left': 30 
      }, 600); 
      $('.secondChart').addClass('rotateRight'); 
      $('.secondChart').stop().animate({ 
       'right': 30 
      }, 600); 
     } 

    } else { 
     if (state != 2) 
     { 
      console.log('> 200, remove Class & animate') ; 
      state = 2 ; 
      $('.firstChart').removeClass('rotateLeft'); 
      $('.firstChart').stop().animate({ 
       'left': -300 
      }, 600); 
      $('.secondChart').removeClass('rotateRight'); 
      $('.secondChart').stop().animate({ 
       'right': -300 
      }, 600); 
     } 
    } 

}); 
0

你需要等待.animate完成,然後觸發下一個部分。

對於else塊。

$('.firstChart').removeClass('rotateLeft'); 
$('.firstChart').animate({'left': -300}, 600, function(){ 
    $('.secondChart').removeClass('rotateRight'); 
    $('.secondChart').animate({'right': -300}, 600); 
}); 

相同的爲if塊。

P.S.讓你的else if部分只是else。並且,確保您的元素具有非靜態的定位,否則此代碼可能無法工作。

+0

感謝@Gaurang Tandon,第二個圖表元素不需要在第一個圖表之後運行,但是他們都需要同時運行 – Liam

+0

好的,您可以分享您的完整HTML代碼,並且CSS,以及整個JS代碼,並可能在[fiddle](http://www.jsfiddle.net) –

+0

繼承人jsFiddle @Gaurang Tandon http://jsfiddle.net/Gm9Fv/ – Liam