DatePickerには内部関数があり、_adjustDate()
後でコールバックを追加したいと思います。
現在の方法
これが私が現在これを行っている方法です。基本的には、関数の定義をそれ自体に置き換えるだけでなく、新しい操作も必要です。これはすべての日付ピッカーに影響しますが、これも望ましいかどうかはわかりません。
$(function(){
var old = $.datepicker._adjustdate;
$.datepicker._adjustDate = function(){
old.apply(this, arguments);
// custom callback here
console.log('callback');
};
});
_adjustDateは、次/前の月のクリック中に呼び出されるものです。この関数は3つのパラメーターを取ります。コールバックを追加するより良い方法があるかどうか知りたいです。
期待される結果
最終結果を次のようにしたいと思います。afterAjustDate
コールバックハンドルはどこですか:
$('#datepicker').datepicker({
showButtonPanel: true
, afterAdjustDate: function(){ $(this).find('foo').addClass('bar'); }
});
ご参考までに
onChangeMonthYear
は受け入れ可能なイベントの代替手段ではありません。また、live()
/ delegate()
(IEでは機能しません)バインディングオプションもありません。
これは、月が選択された後にクラスを適用したり要素を操作したりする必要があるためです。月を変更すると、カレンダーの要素が再作成されます。これが実行されると、jQueryUIはクラスの変更を継承するほど賢くありません。したがって、日付を変更した後、コールバックが必要です。