Javascript 将此传递给Recrive jquery动画函数
我正在尝试制作一个无限的动画循环。一个div需要一直做菱形运动。但它需要为“这个”设置动画 在这种情况下,我已经尝试了一些通常能帮我省钱的方法,但我无法让它发挥作用。我将在下面发布我当前的试用和一些旧的试用: TypeError:未定义selfJavascript 将此传递给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: '+=' +
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);
}