0

我正在将 jQuery UI 中的 Widget 工厂用于现有的生产环境。

此环境使用一个名为的绑定事件sm2.validateNext,该事件在页面更改之前触发。但是,当尝试使用 绑定到此事件时_on,它会尝试拆分此事件名称并委托它。(我认为这是正确的,不是我预期的功能)。

代码(在 $.widget 内):

this._on(true, document, {
    "sm2.validateNext": function () { ... },
});

并调试此代码,它被委派(不是我的预期行为)(来自 jquery-ui.widget.js)

var match = event.match( /^(\w+)\s*(.*)$/ ),
eventName = match[1] + instance.eventNamespace,
selector = match[2];
if ( selector ) {
    delegateElement.delegate( selector, eventName, handlerProxy );
} else {
    element.bind( eventName, handlerProxy );
}

由于 . (点)它得到一个匹配并且选择器在委派事件时变得有效。但是我需要与它的 handlerProxy 绑定。

有没有办法避免“陷入”这场比赛?我试图逃避 sm2\.validateNext 没有结果。

笔记:

$(document).on("sm2.validateNext"...)
对我不起作用,因为我需要实例位于小部件对象上。

谢谢你的帮助!

4

1 回答 1

0

通过使用找到我的解决方案$.proxy

代替:

this._on(true, document, {
    "sm2.validateNext": function () { ... },
});

我用了:

$(document).on("sm2.validateNext", $.proxy(function () { ... }, this));

现在它就像我预期的那样工作。

于 2014-02-20T17:26:11.320 回答