4

*= 是一个有效的 javascript 赋值运算符。为什么我不能用它来动画属性值?下面的代码将不起作用。我想做的就是将宽度和高度加倍。

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

2 回答 2

6

这并不奏效,因为还没有人实施它。如果你想这样做(并使世界jQuery 更好一点),只需看看“Contribute 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');
});
于 2013-10-06T06:24:43.023 回答
1

从根本上说,因为您试图将表达式文字传递给它,而不是表达式的结果。jQuery 本身没有处理来理解差异。为什么要这样做?jQuery 不应该有一个完整的 Javascript 解释器。那是严重的膨胀。

您将得到的最接近的是:

var divbox = $('div.box');
divbox.animate({ 
    width: (divbox.width() * 2) + 'px', 
    height: (divbox.height() * 2) + 'px'
});
于 2013-10-06T06:23:55.920 回答