通过回调

时间:2017-01-30 20:17:18

标签: javascript jquery

我不确定如何说出来,这就是我想要完成的事情:

$(document).on('click', '.my-element', function(e) {
    var data = [{
        'event': e,
        'self': this
    }];

    // Trigger the override function first in case they need to stop prop
    $(document).trigger('override:something',dataa);

    // Would like to only trigger this default method if the event above is not set
    $(document).trigger('something',data);
});

然后在另一个页面上,我有一些东西要抓住这个事件,如下:

$(document).on('override:something', function(e,data) {
    e.stopImmediatePropagation();
    data.e.stopImmediatePropagation(); // neither work
});

如果我能阻止所有这样的后续事件是最佳的,但如果有办法检查是否设置了自定义事件,我也可以使其工作。

我可以检查override:something是否存在,如果存在,请不要在之后执行默认的something事件。

我已尝试设置删除这样的特定回调,但它没有按预期执行,可能难以管理。

var mycb = function() {
    alert('hi');
}
$(document).on('something', mycb);
// now to remove it
$(document).off('something', mycb); // does not remove the event 

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

感谢帮助人员,但这个解决方案似乎是我现在唯一能找到的工作。但仍然接受替代答案。

    var override = jQuery._data($(document)[0], 'events')['override:something'];

    $(document).trigger('override:something', data);

    if ( typeof override == typeof undefined )
        $(document).trigger('dashboard:friend', data);
相关问题