0

我正在使用從jQuery UI的Widget工廠到現有的生產環境。jQuery小部件_on委託元素

該環境使用名爲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"...)
不適合我,因爲我需要該實例在窗口小部件對象。

感謝您的幫助!

回答

0

發現我的解決方案通過使用$.proxy

相反的:

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

我用:

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

而現在它工作得如我所料。