2010-11-29 5 views
0

donc j'ai une fonction pour gérer les éléments avec un pointeur, mais je veux être en mesure de passer dans les styles css comme argument. J'ai essayé différentes variations, mais est actuellement mon code (seulement la partie nécessaire) ...passant style comme argument à jquery animer

function load_hovers(mouseOverCss){ 
    $('.hover').hover(function(){ 
    $(this).animate({ 
     eval(mouseOverCss) 
    }, 500, function() { 
    }); 

et j'appeler load_hovers("backgroundColor: 'red'");

ce renvoie une erreur invalid object initializer $(this).animate({. sans utiliser eval, l'erreur est missing : after property id {eval(mouseOverCss)}\n.

des suggestions?

Répondre

0

obtenu il.

var mouseOverCss = {}; 
mouseOverCss['backgroundColor'] = 'red'; 
mouseOverCss['paddingLeft'] = '100px'; 
load_hovers(mouseOverCss); 

et puis juste

$(this).animate(mouseOverCss, duration); 

merci Phil pour moi d'obtenir sur le chemin de non seulement envoyer une chaîne pré-formatée pour Animate()!

0

Vous êtes probablement mieux de rester loin de l'option Eval (Eval est diabolique et tout ça ...) et essayez plutôt de passer un objet à votre méthode.

d'abord créer un objet pour votre argument CSS:

var css = {}; 
css.Property = 'backgroundColor'; 
css.Value = 'Red'; 

Ensuite, vous pouvez passer ce (ou un tableau d'entre eux, si vous avez besoin de plusieurs propriétés) à votre méthode:

function load_hovers(classes) 
{ 
    $('.hover').hover(function(){ 
     $(this).animate({ 
     $(this).css(classes.Property, classes.Value); // or iterate over an array of these 
     }, 500, function() { 
     }); 
    }); 
} 
+0

cette méthode génère toujours une erreur 'missing: after property id' pour moi. – brewster

+0

Comment et où appelez-vous cette méthode? Est-ce que c'est dans un événement jQuery DOM prêt? –

+0

oui c'est dans un événement prêt, je l'ai juste laissé hors du code que j'ai posté pour le garder court. – brewster