Jquery UI dialog: как инициализировать без заголовка?

Можно ли открыть диалоговое окно JQuery UI без заголовка?

Ответ 1

Я решил исправить динамическое удаление строки заголовка.

$("#example").dialog(dialogOpts);
// remove the title bar
$(".ui-dialog-titlebar").hide();

Это приведет к удалению всех элементов с помощью класса "ui-dialog-titlebar" после визуализации диалогового окна.

Ответ 2

Я думаю, что лучшим решением является использование опции dialogClass.

Экстракт из jquery UI docs:

во время init: $('.selector').dialog({ dialogClass: 'noTitleStuff' });

или если вы хотите после init.:

$('.selector').dialog('option', 'dialogClass', 'noTitleStuff');

Итак, я создал некоторый диалог с опцией dialogclass= 'noTitleStuff' и css вроде этого:

.noTitleStuff .ui-dialog-titlebar {display:none}

слишком просто!! но я подумал, почему мой предыдущий метод бурения класса id → не работал. Фактически, когда вы вызываете метод .dialog(), div, который вы преобразовываете, становится дочерним по отношению к другому div (реальный диалог div) и, возможно, "брату" из div titlebar, поэтому очень сложно попытаться найти последнее, начиная с прежнего.

Ответ 3

Я считаю, что вы можете скрыть его с помощью CSS:

.ui-dialog-titlebar {
    display: none;
}

В качестве альтернативы вы можете применить это к определенным диалогам с опцией dialogClass:

$( "#createUserDialog" ).dialog({
    dialogClass: "no-titlebar"
});
.no-titlebar .ui-dialog-titlebar {
    display: none;
}

Отметьте Theming "Диалог. В приведенном выше предложении используется опция dialogClass, которая, по-видимому, находится на в этом направлении в пользу нового метода.

Ответ 4

Я использую это в своих проектах

$("#myDialog").dialog(dialogOpts);
// remove the title bar
$("#myDialog").siblings('div.ui-dialog-titlebar').remove();
// one liner
$("#myDialog").dialog(dialogOpts).siblings('.ui-dialog-titlebar').remove();

Ответ 5

Это сработало для меня:

$("#dialog").dialog({
    create: function (event, ui) {
        $(".ui-widget-header").hide();
    },

Ответ 6

Попробуйте использовать

$("#mydialog").closest(".ui-dialog-titlebar").hide();

Это скроет все названия диалогов

$(".ui-dialog-titlebar").hide();

Ответ 7

На самом деле есть еще один способ сделать это, напрямую используя диалог widget:

Вы можете получить Виджет Dialog таким образом

$("#example").dialog(dialogOpts);
$dlgWidget = $('#example').dialog('widget');

а затем do

$dlgWidget.find(".ui-dialog-titlebar").hide();

чтобы скрыть titlebar только в этом диалоге

и в одной строке кода (мне нравится цепочка):

$('#example').dialog('widget').find(".ui-dialog-titlebar").hide();

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

Ответ 8

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

open: function() { $(this).closest(".ui-dialog").find(".ui-dialog-titlebar:first").hide(); }

Simple.

Ответ 9

Вы можете использовать jquery, чтобы скрыть заголовок после использования dialogClass при инициализации диалога.

во время init:

$('.selector').dialog({
    dialogClass: 'yourclassname'
});

$('.yourclassname div.ui-dialog-titlebar').hide();

Используя этот метод, вам не нужно менять свой файл css, и это тоже динамично.

Ответ 10

Мне нравится переопределять виджеты jQuery.

(function ($) {
    $.widget("sauti.dialog", $.ui.dialog, {
        options: {
            headerVisible: false
        },
        _create: function () {
            // ready to generate button
            this._super("_create"); // for 18 would be $.Widget.prototype._create.call(this);
            // decide if header is visible
            if(this.options.headerVisible == false)
                this.uiDialogTitlebar.hide();
        },
        _setOption: function (key, value) {
            this._super(key, value); // for 1.8 would be $.Widget.prototype._setOption.apply( this, arguments );
            if (key === "headerVisible") {
                if (key == false)
                    this.uiDialogTitlebar.hide();
                else
                    this.uiDialogTitlebar.show();
                return;
            }
        }
    });
})(jQuery);

Итак, теперь вы можете настроить, если хотите показать строку заголовка или нет

   $('#mydialog').dialog({
      headerVisible: false // or true
});

Ответ 11

Если у вас несколько диалоговых окон, вы можете использовать это:

$("#the_dialog").dialog({
        open: function(event, ui) { 
            //hide titlebar.
            $(this).parent().children('.ui-dialog-titlebar').hide();
        }
    });

Ответ 12

Это самый простой способ сделать это, и он удалит только заголовок в этом конкретном диалоговом окне;

$('.dialog_selector').find('.ui-dialog-titlebar').hide();

Ответ 13

Попробуйте это

$("#ui-dialog-title-divid").parent().hide();

замените divid на соответствующий id

Ответ 14

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

То, что я сделал, было удалено из DOM с помощью $(selector).remove(). Теперь читатели экрана (и все остальные) не будут видеть его, потому что он больше не существует.

Ответ 15

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

https://github.com/jquery/jquery-ui/blob/master/ui/jquery.ui.dialog.js

Ответ 16

Это сработало для меня, чтобы скрыть строку заголовка диалогового окна:

$(".ui-dialog-titlebar" ).css("display", "none" );

Ответ 17

Вот как это можно сделать.

Перейдите в папку тем → база → откройте jquery.ui.dialog.css

Найти

Подписания

если вы не хотите отображать titleBar, тогда просто установите display: none, как я сделал в следующем.

.ui dialog.ui-dialog .ui-dialog-titlebar 
{
    padding: .4em 1em;
    position: relative;
        display:none;
}

Аналогично для заголовка.

.ui-dialog .ui-dialog-title {
    float: left;
    margin: .1em 0;
    white-space: nowrap;
    width: 90%;
    overflow: hidden;
    text-overflow: ellipsis;
    display:none; 
}

Теперь нажимаем кнопку "Закрыть", вы также можете установить ее none или вы можете установить ее

.ui-dialog .ui-dialog-titlebar-close {
    position: absolute;
    right: .3em;
    top: 50%;
    width: 21px;
    margin: -10px 0 0 0;
    padding: 1px;
    height: 20px;

   display:none;

}

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

вот синтаксис для этого

$(".specificclass").css({display:normal})

Ответ 18

Эта следующая форма устранила проблему.

$('#btnShow').click(function() {
  $("#basicModal").dialog({
    modal: true,
    height: 300,
    width: 400,
    create: function() {
      $(".ui-dialog").find(".ui-dialog-titlebar").css({
        'background-image': 'none',
        'background-color': 'white',
        'border': 'none'
      });
    }
  });
});
#basicModal {
  display: none;
}
<script src="http://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.10.3/jquery-ui.min.js"></script>
<link rel="stylesheet" href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.10.3/themes/smoothness/jquery-ui.css" />
<div id="basicModal">
  Here your HTML content
</div>
<button id="btnShow">Show me!</button>

Ответ 19

Вы можете удалить панель с помощью значка закрытия с помощью описанных выше техник, а затем добавить значок закрытия самостоятельно.

CSS

.CloseButton {
background: url('../icons/close-button.png');   
width:15px;
height:15px;
border: 0px solid white;
top:0;
right:0;
position:absolute;
cursor: pointer;
z-index:999;
}

HTML:

var closeDiv = document.createElement("div");
closeDiv.className = "CloseButton";

//добавьте этот div в div, содержащий ваш контент

JS:

 $(closeDiv).click(function () {
         $("yourDialogContent").dialog('close');
     });

Ответ 20

перейдите в свой jquery-ui.js(в моем случае jquery-ui-1.10.3.custom.js) и выполните поиск this._createTitlebar(); и прокомментировать его.

теперь любой из ваших диалогов появится с заголовками. Если вы хотите настроить заголовок, просто перейдите в _createTitlebar(); и отредактируйте код внутри.

по