JQuery - 添加另一个调用前一个的事件处理程序

时间:2011-02-02 15:44:35

标签: jquery events datepicker

我正在尝试将第二个事件处理程序添加到已经创建的日期选择器中。

基本上我有一些函数可以使一个带有一堆默认值的日期选择器,包括一个onSubmit处理程序。

我想保留现有onSubmit处理程序的行为,但也会自己捕获该事件以进行进一步处理。

以下是我的表现:

make_datepicker( "some_id" ); //someone else's code that I can't change
var prev_submithandler = $("#some_id").datepicker('option', 'onSelect');
$("#some_id").datepicker('option', 'onSelect', function(dateText) {
    prev_submithandler(dateText);
    // do some other stuff
});

这似乎在调试器中工作得很好,但当我进入上一个提交处理程序时,“this”的值已经改为不是datepicker的输入字段,而是现在整个DOMWindow对象。这打破了先前提交处理程序中的逻辑。

如果我尝试添加第二个处理程序,第一个似乎被覆盖(我认为这不是预期的行为?),所以我尝试了这种方法。

我是否认为这一切都错了?我是一个javascript n00b。

1 个答案:

答案 0 :(得分:0)

不确定你做了什么,但听起来像是一个范围问题,所以尝试使用function.call或function.apply

e.g。

$("#some_id").datepicker('option', 'onSelect', function(dateText) {
    prev_submithandler.call(this, dateText);
    // do some other stuff
});
相关问题