Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用jQuery选项设置动画_Javascript_Jquery - Fatal编程技术网

Javascript 使用jQuery选项设置动画

Javascript 使用jQuery选项设置动画,javascript,jquery,Javascript,Jquery,我正试图编写一个jQuery插件来制作一些动画,但我希望将动画选项作为字符串传入,如下所示: (function ($) { $.fn.animateBox = function (options) { options = $.extend({ animation: "backgroundColor: '#0E4839', padding: '10px', color: '#ffffff', fontSize: '153.846%', margin

我正试图编写一个jQuery插件来制作一些动画,但我希望将动画选项作为字符串传入,如下所示:

(function ($) {
    $.fn.animateBox = function (options) {
        options = $.extend({
            animation: "backgroundColor: '#0E4839', padding: '10px', color: '#ffffff', fontSize: '153.846%', margin: '0 0 1em 0'"
        }, options);

        return $(this).each(function () {
            var box = $(this);
            box.animate({ options.animation }, 'slow');
        });
    };
})(jQuery);

这是可能的,因为上面正在抛出一个错误,抱怨
选项中的点。动画
应该是一个分号(因为它需要类似
背景色:'#0E4839'

您正在以字符串形式传递属性,但jQuery动画需要一个对象。并且不能替换
{}
中的变量(对象文字)

因此,最简单的解决方案是将
动画
制作为对象而不是字符串,使其看起来像这样:

 options = $.extend({
   animation: {
     backgroundColor: '#0E4839', 
     padding: '10px', 
     color: '#ffffff', 
     fontSize: '153.846%', 
     margin: '0 0 1em 0'
   }
 }, options);
然后更改此选项:

box.animate({options.animation}, 'slow');
为此:

box.animate(options.animation, 'slow');

使动画成为对象而不是字符串。然后
box.animate(options.animation,'slow')为什么要将其作为字符串而不是字符串传递object@abhitalks啊,太简单了!如果你加上这个作为回答,我会的accept@Pete:谢谢。作为答案添加。