使用* =将jQuery属性值与jQuery相乘

时间:2013-10-06 06:16:22

标签: jquery

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

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

2 个答案:

答案 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'
});