覆盖jQuery事件中的目标

时间:2009-12-08 16:09:58

标签: jquery oop events

是否可以在自定义事件中覆盖jQuerys target

f.ex:

var scope = function() {
    this.param = 'foo';
}

var instance = new scope();

$(instance).bind('bar', function(e) {
    console.log(e.target);
});

$(instance).trigger('bar');

这将输出整个实例对象。

但如果我希望目标成为别的东西,比如param,我可以尝试:

var scope = function() {
    this.param = 'foo';
}

var instance = new scope();

$(instance).bind('bar', function(e) {
    console.log(e.target);
    console.log(e.customTarget);
});

$(instance).trigger({
    type: 'bar',
    target: instance.param, // override  attempt
    customTarget: instance.param
});

这会将 customTarget 输出为'foo',但目标保持不变。

我需要覆盖目标,但似乎不可能?我也尝试通过jQuery.Event这样做而没有运气。

任何?

1 个答案:

答案 0 :(得分:3)

你不能只传递customTarget并在被调用的eventhandler中重新分配目标吗?

var scope = function() {
    this.param = 'foo';
}

var instance = new scope();

$(instance).bind('bar', function(e) {
    e.target = e.customTarget;
    // do stuff
});

$(instance).trigger({
    type: 'bar',
    customTarget: instance.param
});