* = é um operador de atribuição de javascript válido. Por que não posso usá-lo para animar os valores das propriedades? O código abaixo não funcionará. Tudo o que quero fazer é dobrar a largura e a altura.
$("div.box").animate({
"width" : "*=2",
"height" : "*=2",
}, "slow");
Respostas:
6 para resposta № 1Isso não funciona simplesmente porque ninguém implementou ainda. Se você quiser fazer isso (e fazer o mundojQuery um pouco melhor), apenas dê uma olhada no "Contribut to jQuery" .page.
Para resolver o seu problema por enquanto: você tem que fazer o cálculo por conta própria - algo como o seguinte (não testado, mas você deve ter a idéia):
Para um único elemento:
var element = $("#animate");
element .animate({
"width" : element.width()*2,
"height" : element.height()*2,
}, "slow");
Para vários elementos:
$(".animate").each(function(){
var element = $(this);
element .animate({
"width" : element.width()*2,
"height" : element.height()*2,
}, "slow");
});
1 para resposta № 2
Fundamentalmente, porque você está tentando passaruma expressão literal, em vez dos resultados de uma expressão. O jQuery não tem controle sobre si mesmo para entender a diferença. E por que deveria? O jQuery não deveria ter um intérprete Javascript inteiro dentro dele. Isso é um incômodo sério.
O mais próximo que você vai chegar é:
var divbox = $("div.box");
divbox.animate({
width: (divbox.width() * 2) + "px",
height: (divbox.height() * 2) + "px"
});