JQuery - добавление другого обработчика событий, который вызывает предыдущий - PullRequest
0 голосов
/ 02 февраля 2011

Я пытаюсь добавить второй обработчик событий в средство выбора даты, которое уже было создано.

По сути, у меня есть функция, которая делает указатель даты с кучей значений по умолчанию, включая обработчик 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 голосов
/ 02 февраля 2011

не уверен, что вы делаете, но звучит как проблема с областью, поэтому попробуйте использовать function.call или function.apply

, например

$("#some_id").datepicker('option', 'onSelect', function(dateText) {
    prev_submithandler.call(this, dateText);
    // do some other stuff
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...