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 将此传递给Recrive jquery动画函数_Javascript_Jquery_Animation_Recursion - Fatal编程技术网

Javascript 将此传递给Recrive jquery动画函数

Javascript 将此传递给Recrive jquery动画函数,javascript,jquery,animation,recursion,Javascript,Jquery,Animation,Recursion,我正在尝试制作一个无限的动画循环。一个div需要一直做菱形运动。但它需要为“这个”设置动画 在这种情况下,我已经尝试了一些通常能帮我省钱的方法,但我无法让它发挥作用。我将在下面发布我当前的试用和一些旧的试用: TypeError:未定义self var shakeCounter = 0; function loopShake(self) { if (shakeCounter % 4 === 0) self.animate({left: '+=' +

我正在尝试制作一个无限的动画循环。一个div需要一直做菱形运动。但它需要为“这个”设置动画

在这种情况下,我已经尝试了一些通常能帮我省钱的方法,但我无法让它发挥作用。我将在下面发布我当前的试用和一些旧的试用:

TypeError:未定义self

var shakeCounter = 0;
    function loopShake(self) {
        if (shakeCounter % 4 === 0)
            self.animate({left: '+=' + settings.shakeX, top: '+=' + settings.shakeX}, settings.shakeSpeed, 'linear', function(){ loopShake(self); });
        else if (shakeCounter % 4 === 1)
            self.animate({left: '-=' + settings.shakeX, top: '+=' + settings.shakeX}, settings.shakeSpeed, 'linear', function(){ loopShake(self); });
        else if (shakeCounter % 4 === 2)
            self.animate({left: '-=' + settings.shakeX, top: '-=' + settings.shakeX}, settings.shakeSpeed, 'linear', function(){ loopShake(self); });
        else
            self.animate({left: '+=' + settings.shakeX, top: '-=' + settings.shakeX}, settings.shakeSpeed, 'linear', function(){ loopShake(self); });
        shakeCounter++;
    }(this);
    loopShake();
下面的工作,但在一个间隔动画总是会给出意想不到的结果(对我来说)

此外,我还尝试了一些明显的方法,比如
函数loopShake(this)
var myElement=this;函数loopShake(myElement)
,但这也让我一事无成


希望你们能帮助我

我想你可以删除
loopShake()从您放置在函数定义后面的第一个块开始。这可能就是您之所以会收到错误的原因,因为您没有将此
发送给它?!老兄,我这样做已经太久了:D我不能删除它,因为这是最初调用函数的地方,但是将它改为loopShake(这个)修复了一切!谢谢,你的评论为我指明了正确的方向!
    var myTimer;
    if (settings.shake) {
        myTimer = setInterval(
                (function(self) {
                    var shakeCounter = 0;
                    return function() {
                        if (shakeCounter % 4 === 0)
                            self.animate({left: '+=' + settings.shakeX, top: '+=' + settings.shakeX}, settings.shakeSpeed);
                        else if (shakeCounter % 4 === 1)
                            self.animate({left: '-=' + settings.shakeX, top: '+=' + settings.shakeX}, settings.shakeSpeed);
                        else if (shakeCounter % 4 === 2)
                            self.animate({left: '-=' + settings.shakeX, top: '-=' + settings.shakeX}, settings.shakeSpeed);
                        else
                            self.animate({left: '+=' + settings.shakeX, top: '-=' + settings.shakeX}, settings.shakeSpeed);
                        shakeCounter++;
                    }
                })(this), 0);
    }