私はonSelectイベントハンドラを持つdatepickerを持っています。私のプログラムの後半で、他のonSelectハンドラを追加したいと思います。問題は、最初のものを拭き取ることです。 (Fiddle。)jquery-ui datepickerインスタンスに追加のイベントハンドラを追加するには?
どうすればいいですか?
私はonSelectイベントハンドラを持つdatepickerを持っています。私のプログラムの後半で、他のonSelectハンドラを追加したいと思います。問題は、最初のものを拭き取ることです。 (Fiddle。)jquery-ui datepickerインスタンスに追加のイベントハンドラを追加するには?
どうすればいいですか?
アレイ内で希望のコールを維持できます。
var firstHandler = function(dateText, inst) {
console.log('Original Handler', dateText, inst);
};
var secondHandler = function(dateText, inst) {
console.log('Second Handler', dateText, inst);
};
$('#datepicker').datepicker({
onSelect: function() {
var sinks = $(this).data("mySelects");
for (var i = 0; i < sinks.length; i++)
sinks[i].apply(this, arguments);
}
}).data("mySelects", [firstHandler]);
$('#addBtn').click(function(event) {
$('#datepicker').data('mySelects').push(secondHandler);
$('#datepicker').data('mySelects').push(nthHandler);
});
ありがとうございます。私はちょうど私が上記のコメントを見たときにコーディングを終了した。私は、リンクされたソリューションは少しエレガントだと思う。アップデート:実際には、あなたのバージョンは私のものよりもエレガントです。 Hmm ... – sprugman
このソリューションはいくつかの状況でうまくいきます(最初のハンドラでは、最初のハンドラのコンテキストから出てくる変数がある場合、リンクされたソリューションは機能しません)。私に解決策を説明するドキュメントはどこにありますか? 例えば、arguments変数を理解できません。 –
'.apply(this、arguments)'は 'sinks []'で関数を呼び出し、 'this'がハンドラ内で正しいことを確認します。 'onSelect'が元々受け取った全ての引数(' dateText'と 'inst')を渡すために' arguments'オブジェクトも渡します。 https:// developer.mozilla.org/ja/JavaScript/Reference/Functions_and_function_scope/arguments' –
これは前に頼まれているようだ。http://stackoverflow.com/q/2241725/1030169 – jmoerdyk
私はそれが可能だろうと思ったが、それを見つけることができませんでした、ありがとう。 – sprugman