* =是一個有效的javascript賦值運算符。爲什麼我不能用它來動畫屬性值?下面的代碼將不起作用。我想要做的只是寬度和高度的兩倍。用jQuery將CSS屬性值乘以* =
$('div.box').animate({
'width' : '*=2',
'height' : '*=2',
}, 'slow');
* =是一個有效的javascript賦值運算符。爲什麼我不能用它來動畫屬性值?下面的代碼將不起作用。我想要做的只是寬度和高度的兩倍。用jQuery將CSS屬性值乘以* =
$('div.box').animate({
'width' : '*=2',
'height' : '*=2',
}, 'slow');
,因爲沒有人實現它這不只是工作。如果你想這樣做(並使世界 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');
});
基本上,因爲您正在嘗試將它傳遞給表達式,而不是表達式的結果。 jQuery本身沒有處理任何東西來理解差異。爲什麼呢? jQuery不應該有一個完整的JavaScript解釋器。這是嚴重的膨脹。
你會得到最接近的是:
var divbox = $('div.box');
divbox.animate({
width: (divbox.width() * 2) + 'px',
height: (divbox.height() * 2) + 'px'
});
@意大利:好點,我改變了這一點。 – oezi
這是一個很好的答案,除了政治聲明,如果你不必要地膨脹一個圖書館不需要的功能,並且答案完全沒有任何首都,那麼這個世界會更好...... – Sumurai8
你是對的首都(我有一些in),但我不同意「不必要的膨脹」 - jQuery確實實現了'+ ='和' - ='(http://api.jquery.com/animate/#animation-properties)的語法,所以加入'* ='和'/ ='會使它的功能更加一致(和我認識的大多數人一樣)。 – oezi