2011-12-12 115 views
0

我正在爲一個名爲$('。plan')的div設置動畫效果。我想抓住它的originalWidth在一個變量中,並且在懸停動畫後沒有這個值改變,所以我可以在動畫完成後返回它。jQuery animate:我如何防止更改值?

$(document).ready(function() { 

    var $plan = $('.plan'), 
    origWidth = $plan.width(); 

    $plan.hover(function() { 
     $this = $(this); 
     $this.stop().animate({width: 200, backgroundColor:'#a4a4a4'}, 500)  
    }, function() { 
     $this.stop().animate({width: origWidth, backgroundColor:'#e2e2e2'}, 200) 
    }); 

}); 

我該怎麼做?

嘿,好像它現在工作。怎麼來的?

+0

出了什麼問題?您使用此代碼遇到什麼錯誤/問題? – Vigrond

+0

嘗試在該origWidth變量前加上一個'var'。根據你的代碼,我不明白爲什麼它應該改變(即使有或沒有我後面的建議)。 – Romanulus

+0

@Romanulus這兩個變量聲明之間有一個逗號,所以'origWidth'技術上確實有'var'。 – Jasper

回答

0
$(function() { 

    var $plan  = $('.plan'), 
     origWidth = $plan.width(); 

    $plan.hover(function() { 
     $(this).stop().animate({width: 200, backgroundColor:'#a4a4a4'}, 500)  
    }, function() { 
     $(this).stop().animate({width: origWidth, backgroundColor:'#e2e2e2'}, 200) 
    }); 

}); 

這裏是一個演示:http://jsfiddle.net/Dc367/

這一切我真的改變是$this引用,你並不真的需要緩存的選擇,如果你不打算使用它不止一次。而且你沒有在第二個.hover()函數中聲明$this變量,所以我認爲這就是代碼破壞的地方。