将样式作为参数传递给jquery animate

时间:2010-11-29 02:23:22

标签: jquery animation

所以我有一个用悬停处理元素的函数,但是我希望能够将css样式作为参数传递。我尝试了不同的变化,但这是我的代码(只是必要部分)...

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

我打电话给load_hovers("backgroundColor: 'red'");

这会返回错误invalid object initializer $(this).animate({。如果不使用eval,则错误为missing : after property id {eval(mouseOverCss)}\n

有什么建议吗?

2 个答案:

答案 0 :(得分:0)

你最好远离Eval选项(Eval是邪恶的,所有......)并尝试将对象传递给你的方法。

首先为CSS参数创建一个对象:

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

然后你可以将这个(或者它们的数组,如果你需要多个属性)传递给你的方法:

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

答案 1 :(得分:0)

得到了它。

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

然后只是

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

感谢Phil让我走的路不仅仅是为animate()发送预格式化的字符串!