jQueryUI модальная функция добавления к значениям по умолчанию - PullRequest
1 голос
/ 22 сентября 2011

Я всегда исправляю эту проблему с хромированной полосой прокрутки в каждом добавляемом мной моде jQueryUI Итак, я подумал, что мог бы добавить этот код в диалоговое окно jqueryUI по умолчанию. Я нашел этот вопрос , но не могу полностью устранить пробел и применить его к моему коду.

$.extend($.ui.dialog.prototype.options, {
    open: function(event, ui){
        window.setTimeout(function(){jQuery(document).unbind('mousedown.dialog-overlay').unbind('mouseup.dialog-overlay');}, 100);
    }
});

Проблема в том, что если у меня есть код в событии открытия диалога, он переопределит значение по умолчанию.

$("#modalContent").dialog({
    open:function(){
        alert('Hey buddy!');
    }
});

Итак, мой вопрос состоит из двух частей; Как мне сложить функции вместо того, чтобы переопределять их, и я должен даже сделать это во-первых? Спасибо!

Вот jsfiddle: http://jsfiddle.net/McWatt/HSA8M/

Ответы [ 2 ]

0 голосов
/ 22 сентября 2011

По-моему, у вас есть одна проблема в вашем jsfiddle:

  • диалог не разрушен, и поэтому открытый обратный вызов остается прежним

Вот обновленная скрипка: http://jsfiddle.net/thomas_peklak/HSA8M/3/

Тем не менее, я бы не советовал изменять значения по умолчанию для библиотечного объекта.На мой взгляд, гораздо безопаснее создать свой собственный ui.widget на основе ui.dialog и переопределить значения по умолчанию в вашем объекте.

Ваш случай выглядит довольно простым, но где мы должны провести черту между чистыми запутанный код?

0 голосов
/ 22 сентября 2011

Решение намного проще, чем это. Вы можете просто удалить эти события, переопределив $.ui.dialog.overlay.events, что предотвратит их привязку к началу:

$.ui.dialog.overlay.events = $.map('focus,keydown,keypress'.split(','),
        function(event) { return event + '.dialog-overlay'; }).join(' ');

Примечание. Если вы уберете нажатие клавиши, вы не сможете закрыть диалоговое окно клавишей выхода Возможно, вы захотите взглянуть и на переопределение create -метода. Проверьте источник для получения дополнительной информации.

См. контрольный пример на jsFiddle

...