可以将参数用作动画属性名称吗?

时间:2014-05-21 22:08:31

标签: javascript jquery css jquery-animate

我尝试过搜索 - 也许我的术语已关闭,但我无法找到答案。我试图创建一个插件,我可以通过函数传递一个css属性名称。这就是我所拥有的,但它只有在我用实际的属性名称替换param时才有效...

http://jsfiddle.net/2Cq6S/1/

(function($){
    $.fn.clickPlugin = function(param){
        $(this).animate({param:'100px'});
    };
}(jQuery));   


$('.click').click(function(){
    $(this).clickPlugin('height');
});

Any help would be awesome

1 个答案:

答案 0 :(得分:2)

您必须使用obj[name]语法为这样的属性使用变量名称:

(function($){
    $.fn.clickPlugin = function(param){
        var obj = {};
        obj[param] = '100px';
        this.animate(obj);
    };
}(jQuery));   

工作演示:http://jsfiddle.net/jfriend00/2q5m4/

要使用变量名称,您必须为其分配代码。无法在静态对象声明中为属性使用变量名称。因此,上面的代码创建了对象,然后使用JS行分配属性。


仅供参考,在jQuery插件方法中,this已经是主机jQuery对象,因此您不必将其包装在$(this)中以将其用作jQuery对象。