2010-02-11 47 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