расширить JQuery UI диалог (добавить дополнительные параметры)

Как я могу создавать и добавлять новые параметры для диалога JQuery? например: мне нравится, что через настройки параметров можно управлять отображением строки заголовка или отображать кнопку закрытия.

Сценарий будет выглядеть так:

$("#message").dialog({
  showTitle:false,     //new option (hide Title bar)
  showCloseButton:true //new option (show close button)
  modal:true...        //other options
})
 Kevin B05 июн. 2012 г., 19:48
Вам придется расширить виджет диалогового окна пользовательского интерфейса jQuery и переопределить его метод создания, чтобы при построении диалога он просматривал дополнительные параметры и включал или исключал кнопку заголовка и / или кнопку закрытия. Вместо этого вы можете просто включить свой собственный css, который скрывает их для всех диалогов на вашей странице, или использовать методы .find () и .css в диалоговом окне при его создании, чтобы скрыть эти фрагменты.

Ответы на вопрос(2)

Решение Вопроса

// store old method for later use
var oldcr = $.ui.dialog.prototype._create;
// add the two new options with default values
$.ui.dialog.prototype.options.showTitlebar = true;
$.ui.dialog.prototype.options.showClosebutton = true;
// override the original _create method
$.ui.dialog.prototype._create = function(){
    oldcr.apply(this,arguments);
    if (!this.options.showTitlebar) {
       this.uiDialogTitlebar.hide();
    }
    else if (!this.options.showClosebutton) {
       this.uiDialogTitlebar.find(".ui-dialog-titlebar-close").hide();
    }
};

// this is how you use it
$("<div />").dialog({
    showClosebutton: false
});
// or
$("<div />").dialog({
    showTitlebar: false
});

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

вы можете расширять виджеты гораздо приятнее, не создавая новый виджет.

http://learn.jquery.com/jquery-ui/widget-factory/extending-widgets/

Смотрите - Переопределение виджетов.

$.widget( "ui.dialog", $.ui.dialog, {
    open: function() {
        console.log( "open" );
        return this._super();
    }
});

$( "<div>" ).dialog();
 16 мар. 2019 г., 16:38
Привет @romaninsh, я добавил твой код в свой проект, при загрузке страницы всплывающее окно открывалось без нажатия кнопки, могу ли я знать, почему, я должен добавить свой расширенный файл jquery после плагина jquery?
 16 мар. 2019 г., 16:38
Привет @romaninsh, я добавил твой код в свой проект, при загрузке страницы всплывающее окно открывалось без нажатия кнопки, могу ли я знать, почему, я должен добавить свой расширенный файл jquery после плагина jquery?

Ваш ответ на вопрос