可以使用参数作为动画属性名

Possible to use a parameter as an animate property name?

本文关键字:动画 属性 参数 可以使      更新时间:2023-09-26

我试着做一个搜索-也许我的术语是off,但我找不到答案。我试图使一个插件,我可以通过一个函数传递css属性名称。这就是我所拥有的,但它只有在我用实际的属性名称替换参数时才能工作…

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

您必须使用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对象。