2010-02-11 10 views
8

Ich versuche, das gleiche onSelect-Ereignis auf einem jquery datePicker-Objekt zweimal zu behandeln. Von dem, was ich verstehe, kann das Ereignis mehrfach behandelt werden, aber wenn ich versuche, wird nur einer der Ereignishandler ausgelöst. Es scheint den zweiten Handler auszulösen, aber nicht den ersten. Wie kann ich das gleiche onSelect-Ereignis zweimal behandeln, ohne das erste zu überschreiben? Dies ist das Problemcode-Snippet.jquery datepicker onelect Ereignishandler mehrmals

$(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'); }); 
} 

Antwort

11

Der Code, den Sie verwenden, ersetzt nur den ersten onSelect-Handler mit dem zweiten. Wenn Sie zwei Dinge tun möchten, müssen Sie zunächst den vorhandenen onSelect-Handler aufrufen und ihn dann innerhalb des Handlers aufrufen, mit dem Sie ihn ersetzen.

$(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

Wunderbar! Genau das habe ich gesucht, danke für deine Hilfe! – Noel

+0

Wirklich! Eine schöne Antwort. – Arjmand

+0

Ist es nicht verschwenderisch, '$ ('. Test')' 4 mal zu machen? Sonst eine sehr nützliche Antwort – freefaller