2013-02-13 73 views
0

我確定我在這裏錯過了一些愚蠢的東西,但我看不到它。
應該發生的事情是,在垂直列表中,當單擊LI時,它會右移動10px,如果單擊了另一個LI,則它會向後移動,並且單擊的LI將向右移動。
這可以正常工作,但如果我回到前一個LI,以前所選的一個會按原樣返回,但點擊的LI不會生成動畫,因此當您點擊來回LI時,會繼續向後移動單擊時LI的動畫位置

$("#navig li").click(function(){ 
$("#navig li.selected").animate({ 
     left: "-=10px", 
     }, 300); 
    $("#navig li.selected").removeClass("selected") 

    $(this).addClass("selected") 
    $(this).animate({ 
     right: "-=10px", 
     }, 300); 
}) 
+0

你的點擊事件?,js代碼在哪裏? – AlexC 2013-02-13 00:52:24

+0

$(「#navig li」)。click(function(){ – user2036277 2013-02-13 00:59:14

+0

總是調整'left'屬性,不要混合'left'和'right' – charlietfl 2013-02-13 01:02:18

回答

0

如果調整left正或負的,做相反的其他條件,但這樣做是爲了同一個位置屬性left

0

你需要這樣的東西嗎?

http://jsfiddle.net/v3LWL

$("#navig li").click(function(){ 
    var $this = $(this), 
     el = $this.siblings().filter(".selected"); 

    el.animate({left: 0}, 300, function(){ 
     $(this).removeClass("selected"); 
    }); 

    $this.animate({left: 10}, 300, function(){ 
     $(this).addClass("selected"); 
    }); 

}); 
+0

我很好奇,它會更好地把它作爲CSS的一部分? – user2036277 2013-02-13 01:16:31

+0

if你不在乎IE7/IE8,它不支持轉換,我會用css的方式 – AlexC 2013-02-13 01:29:57

+0

謝謝你,我玩了一下,但不喜歡在LI上等待綠色背景的美學。出現,我認爲僅僅爲動畫添加一個單獨的課程只是做更多的工作。 – user2036277 2013-02-13 01:37:52