0

jQuery UI의 위젯 팩토리를 기존 프로덕션 환경에 사용하고 있습니다.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)); 

을 그리고 지금은 내가 예상대로 작동합니다.