【发布时间】:2011-03-04 17:31:59
【问题描述】:
有一个 Abon 类的对象,然后我希望这个对象在页面上移动。
a = new Abon();
a.init();
a.move();
方法move()包含:
function abon_move () {
var x = this.x;
var y = this.y;
var direction_x = Math.random()*5 - 5;
var direction_y = Math.random()*5 - 5;
var x_new = x + direction_x * this.movement_rate;
var y_new = y + direction_y * this.movement_rate;
console.log(x_new+" "+y_new)
$(".abonent."+this.id).animate( {
left:+x_new,
top:+y_new
}, 'slow', "linear", function() { this.move() });
}
我想要的是方法move(表示为函数abon_move())在animate 停止后一次又一次地重复。但问题是回调中显示的this.move() 与我的对象没有连接,因为该位置的this 指向由jQuery 选择的HTML 元素。
更新:
function Abon(id) {
...
this.move = abon_move;
...
}
Abon.prototype.move = abon_move;
和实际的方法是一样的,只是animate中没有回调
然后我尝试执行以下操作:
setInterval( a[0].move , 300); //doesn't work - says `this` members are undefined
setInterval( a[0].move() , 300); //works only one time and stops
感谢您的帮助!
【问题讨论】:
标签: javascript jquery this