* = est un opérateur d'assignation javascript valide. Pourquoi ne puis-je pas l'utiliser pour animer des valeurs de propriété? Le code ci-dessous ne fonctionnera pas. Je ne souhaite que doubler la largeur et la hauteur.
$("div.box").animate({
"width" : "*=2",
"height" : "*=2",
}, "slow");
Réponses:
6 pour la réponse № 1Cela ne fonctionne pas simplement parce que personne ne l’a encore implémenté. Si vous voulez le faire le mondejQuery un peu mieux), juste jetez un coup d’œil à la page "Contribut to jQuery"..
Pour résoudre votre problème pour le moment: vous devez faire le calcul vous-même - quelque chose comme ce qui suit (non testé, mais vous devriez avoir l’idée):
Pour un seul élément:
var element = $("#animate");
element .animate({
"width" : element.width()*2,
"height" : element.height()*2,
}, "slow");
Pour plusieurs éléments:
$(".animate").each(function(){
var element = $(this);
element .animate({
"width" : element.width()*2,
"height" : element.height()*2,
}, "slow");
});
1 pour la réponse № 2
Fondamentalement, parce que vous essayez de le faire passerune expression littérale, plutôt que les résultats d'une expression. jQuery n'a aucune manipulation en soi pour comprendre la différence. Et pourquoi devrait-il? jQuery ne devrait pas "avoir un interprète complet en javascript. C'est sérieux."
Le plus proche que vous allez obtenir est:
var divbox = $("div.box");
divbox.animate({
width: (divbox.width() * 2) + "px",
height: (divbox.height() * 2) + "px"
});