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 に答える