我正在使用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"...)对我不起作用,因为我需要将实例放在widget对象中。
感谢您的帮助!
答案 0 :(得分:0)
使用$.proxy
而不是:
this._on(true, document, {
"sm2.validateNext": function () { ... },
});
我用过:
$(document).on("sm2.validateNext", $.proxy(function () { ... }, this));
现在它的效果和我预期的一样。