Вы можете использовать небольшую функцию jQuery.proxy () .Примерно так:
var obj = {
mouseX: 0,
mouseY:0,
el:$('#'+canvasId),
mousemove: function(e) {
this.mouseX = e.pageX-this.el.offsetLeft;
this.mouseY = e.pageY-this.el.offsetTop;
}
};
$('#'+canvasId).mousemove( jQuery.proxy( obj.mousemove, obj ) );
Конечно, вы больше не получаете доступ к исходному элементу jQuery через this , поэтому вы должны сохранить его как свойство объекта, что-то вроде this.el , заранее
Вы даже можете создать событие внутри объекта следующим образом:
this.el.mousemove( jQuery.proxy( this.mousemove, this ) );