2

jQueryUI를 1.8로 업데이트 한 이래로 구현시 몇 가지 문제점을 발견했으며 datepicker 위젯의 특정 메소드를 하위 클래스 화하는 방법을 찾을 수 있다면 문제를 해결하지 않고 직접 해결할 수있었습니다. 부모 코드를 작성한 다음 내 코드를 실행하십시오.특정 jqueryui 위젯 메소드를 서브 클래스 화하는 방법은 무엇입니까?

나는 $ .widget을 읽고 있었지만 어떻게 작동하는지 생각해 볼 수는 없습니다.

$.widget("ui.datepicker", { 
    _showDatepicker: function(input) { 
    alert('Yo'); 
    $.datepicker.prototype._showDatepicker.apply(this,arguments); 
    alert('Hey!'); 
    } 
}); 

그리고 다른 변화의 모든 종류의 난 그냥 jQueryUI의 '확장 성'을 이해하지 못하거나 그냥 할 수 없다고 생각하는 한 beging :

나는 이런 식으로 뭔가를 시도했다.

아무도 내가 이것을 얻을 수있는 방법을 알고 있습니까?

Thx

답변

3

1.8의 datepicker는 위젯 팩터 리를 사용하지 않습니다. 다른 위젯들도 그렇지만 datepicker는 아직 위젯 팩토리를 사용하기 위해 리팩토링되지 않았습니다. 이는 jQuery UI의 최신 버전에서 발생할 것입니다.

당신은 날짜 선택기에 대한 같은 것을 수행 할 수 있습니다

var old_showDatepicker = $.datepicker._showDatepicker; 
$.datepicker._showDatepicker = function(input){ 
    console.log('hello'); 
    old_showDatepicker.apply(this,arguments); 
    console.log('goodbye'); 
} 

을 그리고 이것은 슬라이더를 위해 :

$.widget("my.slider", $.ui.slider, { 
    _value: function(input) { 
     console.log('Yo'); 
     $.ui.slider.prototype.value.apply(this,arguments); 
     console.log('Hey!'); 
    } 
}); 
+0

나는 af가 함수에서 생성자가 아니라는 것을 알게되었습니다. (jquery-ui-1.8.custom에서. min.js) 라인 37을 실행합니다. – SBUJOLD

+0

글쎄, 그건 내 바보, datepicker는 위젯 공장을 아직 사용하지 않는, 내 대답을 업데이 트했습니다. – PetersenDidIt

+0

전체적으로 많이 설명하는 aaaahhhhhh! 나는 오늘 아침에 당신이 제안한 것을 해냈다. 비록 직접적으로 기능을 호출했지만 DOH는 적용하지 않았다. datepicker가 위젯 팩토리를 사용하지 않는다는 것을 어디에서 알았습니까? 나는 jQueryUI VS jQuery의 성숙과 문서화에있어서 큰 격차를 너무 좌절시키고있다. – SBUJOLD

0

ui.tabs가 많은 사랑을 얻었다, 대체 아마도 적은 코드의 방법은 이것이다 :

https://github.com/jquery/jquery-ui/blob/c1cda180a93a6c0a63cf21a68dacb54233e03d03/ui/jquery.ui.tabs.js#L688

(function($, dp){ 
    var _showDatepicker = dp._showDatepicker; 

    dp._showDatepicker = function(input){ 

     alert('Yo'); 
     _showDatepicker.apply(this, arguments); 
     alert('Hey!'); 
    } 
}(jQuery, jQuery.ui.datepicker); 

TBH, 나는 datepicker를 보지 않을 것입니다. 위젯 팩토리는 훨씬 더 고급입니다. ui.tabs가 동시에 이벤트와 메서드를 연결하는 방법을 살펴보십시오. here

+0

Shouldn ' 중간에'.ui'없이 'jQuery.datepicker'가되는 t? – superjos

+0

datepicker가 내가 주석 처리 한 이후로 위젯 팩토리로 마이그레이션 된 것이므로 관련성이 없습니다. 적절한 커밋을 가리 키도록 내 게시물의 링크를 수정합니다. – Drew

+0

그리고 아니오, jQuery.ui.datepicker b/c를 가리켜 야합니다. jQuery 컬렉션에 Datepicker를 적용한 후에 사용할 수있는 인스턴스 메서드를 재정의합니다. – Drew

관련 문제