jQuery函数回调在自定义类/对象中不起作用

jQuery function callback does not work in custom class/object

本文关键字:对象 不起作用 自定义 函数 回调 jQuery      更新时间:2023-09-26

所以我是编程新手,所以如果这是一个新手问题,请原谅我。 我正在创建一个简单的波浪效果,以创建流动的水的错觉。 我用jquery中的一个简单的函数做到了这一点,它工作得很好。 我正在学习OOP,所以我的代码对于我正在从事的这个项目更有条理。 我创建了一个类来处理此动画。 动画有效,但只触发一次。 我需要它继续射击来创造幻觉。 函数回调以正常的程序方式工作,但它似乎在对象类中不起作用。 我已经研究过这个,研究过这个,但找不到这个具体问题的答案。 任何帮助将不胜感激。 我的代码如下。

    function Waves(selector){
      this.selector = selector;
      this.animateWaves = function(forward,backward,speed){
        $(selector).velocity({translateX: forward},speed); 
        $(selector).velocity({translateX: backward},speed,animateWaves);
      };
    };
   var surfaceWaves = new Waves('#topWaves');
   surfaceWaves.animateWaves('+=40','-=40','1000');

编辑实际上,我的第一个解决方案不起作用,因为回调的上下文是元素,而不是对象。这是工作代码和一个jsfiddle:

function Waves(selector){
  this.selector = selector;
  this.animateWaves = function(forward,backward,speed){
    var self = this; 
    $(selector).velocity({translateX: forward},speed); 
      $(selector).velocity({translateX: backward}, speed, function () {
          self.animateWaves(forward,backward,speed);
      });
  };
};
var surfaceWaves = new Waves('#topWaves');
surfaceWaves.animateWaves('+=40','-=40','1000');

删除了旧代码不正确的代码