【问题标题】:jQuery widget _on delegating ElementjQuery 小部件 _on 委托元素
【发布时间】:2014-02-19 10:21:00
【问题描述】:

我正在将 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"...)
对我不起作用,因为我需要实例位于小部件对象上。

感谢您的帮助!

【问题讨论】:

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


    【解决方案1】:

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

    代替:

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

    我用过:

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

    现在它可以正常工作了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-12-18
      • 2012-08-15
      • 1970-01-01
      • 1970-01-01
      • 2012-03-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多