2

因爲我將jQueryUI更新爲1.8,我在我們的實現中發現了一些問題,我可以自己修復它,而不必等待修復它們的末端,如果我可以找出如何子類化datepicker小部件的特定方法,父代碼,然後執行我的代碼。如何繼承特定的jqueryui小部件方法?

我正在讀上$ .widget但我不能完成我的周圍是如何想工作的頭。

我想是這樣的:

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

和各種其他的變化和beging認爲我只是不明白jQueryUI的的「擴展性」或者它只是不能做。

任何人都知道我可以做到這一點?

Thx

回答

3

1.8中的datepicker不使用widget工廠。其他窗口小部件不過,但是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不是函數remove中的構造函數(來自jquery-ui-1.8.custom。 min.js)第37行,當它執行此行。 – SBUJOLD

+0

那是我的愚蠢,日期選擇器不使用小工廠,更新我的答案。 – PetersenDidIt

+0

aaaahhhhhh解釋了很多!今天早上我做了你所建議的事情,雖然直接調用了這個函數而不是DOH!你在哪裏發現datepicker不使用widget工廠?我對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

不該」 t是'jQuery.datepicker',沒有'.ui'在中間? – superjos

+0

這不是很相關,因爲datepicker顯然已經被移植到了widget工廠,因爲我評論過。我將修復我的帖子中的鏈接以指向正確的提交。 – Drew

+0

不,你應該指向jQuery.ui.datepicker b/c你正在重寫一個實例方法,將Datepicker應用到jQuery集合後可用 – Drew