2013-10-06 62 views
4

* =是一個有效的javascript賦值運算符。爲什麼我不能用它來動畫屬性值?下面的代碼將不起作用。我想要做的只是寬度和高度的兩倍。用jQuery將CSS屬性值乘以* =

$('div.box').animate({ 
    'width' : '*=2', 
    'height' : '*=2', 
}, 'slow'); 

回答

6

,因爲沒有人實現它這不只是工作。如果你想這樣做(並使世界 jQuery好一點),只需take a look at the "Contribut to jQuery".page

解決您的問題,現在:你必須做你自己的計算 - 類似如下(未測試,但你應該明白我的意思):

對於單個元素:

var element = $('#animate'); 
element .animate({ 
    'width' : element.width()*2, 
    'height' : element.height()*2, 
}, 'slow'); 

多個元素:

$('.animate').each(function(){ 
    var element = $(this); 
    element .animate({ 
    'width' : element.width()*2, 
    'height' : element.height()*2, 
    }, 'slow'); 
}); 
+0

@意大利:好點,我改變了這一點。 – oezi

+0

這是一個很好的答案,除了政治聲明,如果你不必要地膨脹一個圖書館不需要的功能,並且答案完全沒有任何首都,那麼這個世界會更好...... – Sumurai8

+0

你是對的首都(我有一些in),但我不同意「不必要的膨脹」 - jQuery確實實現了'+ ='和' - ='(http://api.jquery.com/animate/#animation-properties)的語法,所以加入'* ='和'/ ='會使它的功能更加一致(和我認識的大多數人一樣)。 – oezi

1

基本上,因爲您正在嘗試將它傳遞給表達式,而不是表達式的結果。 jQuery本身沒有處理任何東西來理解差異。爲什麼呢? jQuery不應該有一個完整的JavaScript解釋器。這是嚴重的膨脹。

你會得到最接近的是:

var divbox = $('div.box'); 
divbox.animate({ 
    width: (divbox.width() * 2) + 'px', 
    height: (divbox.height() * 2) + 'px' 
}); 
+2

無需''px'' – Itay

+2

如果選擇返回具有不同尺寸的多個元素,這將無法正常工作。 – oezi

+3

_「爲什麼要這樣?」 - jQuery已經可以處理''='和'' - =''的動畫了,所以這也不是太想知道''=''。 .. – nnnnnn