jQuery小部件_on委托元素

时间:2014-02-19 10:21:00

标签: javascript jquery jquery-ui jquery-widgets jquery-ui-widget-factory

我正在使用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对象中。

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

使用$.proxy

找到我的解决方案

而不是:

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

我用过:

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

现在它的效果和我预期的一样。