2010-02-11 75 views
8

我想在jQuery的datePicker對象上處理相同的onSelect事件兩次。從我所瞭解的事件可以多次處理,但是當我嘗試這個事件處理程序時只有一個被解僱。它似乎擊倒了第二個處理程序,但不是第一個。我如何處理相同的onSelect事件兩次而不覆蓋第一個事件?這是問題代碼片段。jQuery的日期選擇器多次選擇事件處理程序

$(document).ready(function(){ 
    $('.test').datepicker(); 
    ... 
    $('.test').datepicker('option', 'onSelect', function(dateText, inst) { alert('one'); }); 
} 

... 

$(document).ready(function(){ 
    $('.test').datepicker('option', 'onSelect', function(dateText, inst) { alert('two'); }); 
} 

回答

11

您使用的代碼只是將第一個onSelect處理程序替換爲第二個。如果你想做兩件事,那麼你需要首先獲得現有的onSelect處理程序,然後從你正在替換的處理程序中調用它。

$(function() { 
    $('.test').datepicker(); 
    $('.test').datepicker('option', 'onSelect', function(dateText,inst) { alert('one'); }); 
    var prevHandler = $('.test').datepicker('option','onSelect'); 
    $('.test').datepicker('option', 'onSelect', function(dateText,inst) { prevHandler(dateText,inst); alert('two'); }); 
}); 
+0

太棒了!這正是我期待的,謝謝你的幫助! – Noel 2010-02-11 02:20:41

+0

真的!一個美麗的答案。 – Arjmand 2016-06-17 11:48:23

+0

執行'$('。test')'4次是不是有點浪費?否則一個非常有用的答案 – freefaller 2017-01-11 11:11:23