Расширение функциональности событий пользовательского интерфейса jQuery - PullRequest
0 голосов
/ 03 января 2012

Я хочу добавить функцию автоматического уничтожения диалога при закрытии без добавления какого-либо специального кода для каждого вызова диалога в текущем проекте.Поэтому я думаю, что необходимо переопределить стандартное диалоговое окно close событие.

Я нашел способ сделать это (например: Как расширить виджет jquery ui? (1.7) ), но я не хочу просто переопределять событие: мне также нужно сохранить предыдущее поведение события и добавить $(this).dialog("destroy") вызов после него.

Есть предложения?

Ответы [ 2 ]

3 голосов
/ 03 января 2012

Я не уверен на 100% в правильности этого, но я думаю, что вы можете смело переопределить метод close следующим образом:

$.ui.dialog.prototype._originalClose = $.ui.dialog.prototype.close;
$.ui.dialog.prototype.close = function() {
        alert ('My stuff');
        $.ui.dialog.prototype._originalClose.apply(this, arguments);
};

Вы можете увидеть, как это работает на: http://jsfiddle.net/8KKMm/

Однако , как правило, это хорошая идея, чтобы избежать переопределения внешних библиотек.Могут быть более эффективные способы достижения цели без использования библиотеки пользовательского интерфейса jQuery.Обратите внимание на доступные события компонента Dialog: http://jqueryui.com/demos/dialog/.

1 голос
/ 03 января 2012

Вы можете добавить обработчик dialogclose к элементу body страницы.

Вы можете найти образец здесь .

Нет необходимости переопределять функцию закрытия диалогового класса, вы можете просто использовать события, предоставляемые диалоговым классом.

Ex:

$("body").on("dialogclose", function(){
    alert("closed");
});
...