2013-12-16 47 views
0

我試圖使它的相對位置爲0 ul#pikame向右移動,但它一直向右移動,即使位置不爲0動畫元素,如果位置不爲0

我知道li_left在被設置爲0一開始,它會記住並堅守它,但我需要li_left來更新每次新的點擊。

我的代碼:

li_left = $('ul#pikame').css('left'); 
if (li_left == '0px') { 
    $('a.prev').click(function (e) { 
     // e.preventDefault(); 
     $('ul#pikame').animate({ 
      'left': '+=127' 
     }); 
     e.preventDefault(); 
    }); 
} 

總結,應該向右移動只有一次,因爲之後的第一個點擊左側不會是0

回答

0

你的條件應該是點擊處理程序中,而不是外部。

$('a.prev').click(function (e) { 
    li_left = $('ul#pikame').css('left'); 
    if (li_left == '0px') { 
     // e.preventDefault(); 
     $('ul#pikame').animate({ 
     'left': '+=127' 
    } 
    e.preventDefault(); 
}); 
1
if (li_left == 0) { ... 

如果你看一下位置由$('ul#pikame').css('left');返回的值會發現它是一個整數。您目前正在比較它是否爲「0px」的字符串字面量,這是不相等的。

另外,它看起來像你試圖只執行一次動作。如果是這種情況,那麼你可以使用JQuery的one()函數來執行這個動作 - 你猜對了 - 只需要一次!

DEMO:http://jsfiddle.net/P2L5F/

$('div').one('click', function() { 
    $(this).animate({ 
     'left': '+=127' 
    }); 
}); 
+0

已經試過了。那麼它甚至不會移動一次。 –

相關問題