【问题标题】:Use var as key for an object (jQuery.animate specifically)使用 var 作为对象的键(特别是 jQuery.animate)
【发布时间】:2014-02-06 23:55:24
【问题描述】:

我知道有很多相关的问题(一个几乎完全相同),同样的问题和答案。但是,我无法让它工作。

我需要使用:

var direction = 'left';

作为这个动画属性的键:

this.animate({
    direction: '500px',
});

我这样做是因为我需要检测一个元素是在屏幕的左侧还是右侧,然后我将它从哪一侧保存到 direction var 中,然后我想要使用该方向 var 来操作 css left 或 right 属性,具体取决于元素所在的位置...

代码块在下面

    if(this.css('left') != 'auto') {
        var direction = 'left';
    } else {
        var direction = 'right';
    }

    if(action === 'enter') {
        this.addClass('bounce').addClass('positionone');

        this.animate({
            left: settings.moveTo,
        }, settings.walkSpeed, function() {
            $(this).removeClass('bounce');
            $(this).removeClass('positionone').addClass('positiontwo');
            $(this).animate({
                top: '100px',
            }, settings.sitSpeed);
        });
    }

这取自我正在创建的“插件”,这就是为什么它采用“this.animate”等格式。

【问题讨论】:

  • 首先,在if 之前声明var direction。否则,您将只能在if 的范围内访问它。
  • @Cerbrus 我以为javascript只知道函数范围?那会使您的建议错误
  • @RononDex 你是right
  • 哎呀,忽略我之前的评论。那不是真的,范围在这里不是问题。 Herp derp,我在想什么。 -.-
  • @crush 其实这里已经是 16:32 了:P

标签: javascript jquery css object jquery-animate


【解决方案1】:

先创建对象,然后使用[]访问器:

var direction = 'left',
    animationOptions = {};

animationOptions[direction] = '500px';

最后,将对象传递给this.animate方法:

this.animate(animationOptions);

【讨论】:

    猜你喜欢
    • 2016-09-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-13
    • 2022-01-25
    • 1970-01-01
    • 1970-01-01
    • 2015-03-26
    相关资源
    最近更新 更多