* =是一个有效的javascript赋值运算符。为什么我不能用它来动画属性值?以下代码无效。我想做的就是加倍宽度和高度。
$('div.box').animate({
'width' : '*=2',
'height' : '*=2',
}, 'slow');
答案 0 :(得分: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');
});
答案 1 :(得分:1)
从根本上说,因为你试图传递一个表达式文字,而不是表达式的结果。 jQuery本身没有处理它来理解差异。为什么要这样呢? jQuery不应该在其中包含整个Javascript解释器。那是严重的膨胀。
你最接近的是:
var divbox = $('div.box');
divbox.animate({
width: (divbox.width() * 2) + 'px',
height: (divbox.height() * 2) + 'px'
});