Ответы:
Я думаю, что лучшим решением является использование этой опции dialogClass
.
Выдержка из документов JQuery UI:
во время init: $('.selector').dialog({ dialogClass: 'noTitleStuff' });
или если вы хотите после init. :
$('.selector').dialog('option', 'dialogClass', 'noTitleStuff');
Итак, я создал диалог с опцией dialogClass = 'noTitleStuff' и css вот так:
.noTitleStuff .ui-dialog-titlebar {display:none}
слишком просто !! но я потратил 1 день, чтобы подумать, почему мой предыдущий метод сверления id-> class не работал. Фактически, когда вы вызываете .dialog()
метод, преобразованный вами div становится потомком другого div (реального div диалогового окна) и, возможно, «братом» titlebar
div, поэтому очень трудно попытаться найти последний, начиная с первого.
Я нашел решение для динамического удаления строки заголовка.
$("#example").dialog(dialogOpts);
// remove the title bar
$(".ui-dialog-titlebar").hide();
Это удалит все элементы с классом 'ui-dialog-titlebar' после отображения диалогового окна.
#example .ui-dialog-titlebar...
. Это будет работать в любом случае; но Javascript в конце концов установит CSS, поэтому я не вижу преимущества в том, чтобы не делать это в CSS для начала. Это действительно не имеет большого значения - независимо от того, с чем вам удобнее всего :)
Я считаю, что вы можете скрыть это с помощью CSS:
.ui-dialog-titlebar {
display: none;
}
Кроме того, вы можете применить это к определенным диалогам с dialogClass
опцией:
$( "#createUserDialog" ).dialog({
dialogClass: "no-titlebar"
});
.no-titlebar .ui-dialog-titlebar {
display: none;
}
Проверьте " Theming " диалог. Вышеупомянутое предложение использует dialogClass
опцию, которая, по-видимому, находится в процессе выхода в пользу нового метода.
Я использую это в своих проектах
$("#myDialog").dialog(dialogOpts);
// remove the title bar
$("#myDialog").siblings('div.ui-dialog-titlebar').remove();
// one liner
$("#myDialog").dialog(dialogOpts).siblings('.ui-dialog-titlebar').remove();
$(document).ready(function() { $('#video').click(function(){ $( "#dialog" ).dialog().siblings('.ui-dialog-titlebar').removeClass('ui-widget-header'); }); });
$("#myDialog").dialog('open').siblings('.ui-dialog-titlebar').remove();
лучший ответ на мой взгляд +1 для этой строки кода
$("#myDialog").prev().hide()
или $("#myDialog").prev(".ui-dialog-titlebar").hide()
.
Это сработало для меня:
$("#dialog").dialog({
create: function (event, ui) {
$(".ui-widget-header").hide();
},
Попробуйте использовать
$("#mydialog").closest(".ui-dialog-titlebar").hide();
Это скроет все заголовки диалогов
$(".ui-dialog-titlebar").hide();
На самом деле есть еще один способ сделать это, используя диалог widget
напрямую:
Вы можете получить виджет диалога таким образом
$("#example").dialog(dialogOpts);
$dlgWidget = $('#example').dialog('widget');
а затем сделать
$dlgWidget.find(".ui-dialog-titlebar").hide();
скрыть только titlebar
внутри этого диалога
и в одной строке кода (мне нравится цепочка):
$('#example').dialog('widget').find(".ui-dialog-titlebar").hide();
Не нужно добавлять дополнительный класс в диалог таким образом, просто перейдите к нему напрямую. Работа хорошо для меня.
Я считаю более эффективным и более читабельным использование события open и скрытие строки заголовка оттуда. Мне не нравится использовать поиск имени класса по всему миру.
open: function() { $(this).closest(".ui-dialog").find(".ui-dialog-titlebar:first").hide(); }
Просто.
Вы можете использовать jquery, чтобы скрыть заголовок заголовка после использования dialogClass при инициализации диалога.
во время init:
$('.selector').dialog({
dialogClass: 'yourclassname'
});
$('.yourclassname div.ui-dialog-titlebar').hide();
Используя этот метод, вам не нужно менять файл CSS, и это тоже динамично.
Мне нравится переопределять виджеты 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
});
Одна вещь, которую я обнаружил, скрывая заголовок Dialog, - это то, что, даже если display отсутствует, программы чтения с экрана все равно поднимают его и будут читать. Если вы уже добавили свою собственную строку заголовка, она будет читать оба, вызывая путаницу.
То, что я сделал, было удалено из DOM с помощью $(selector).remove()
. Теперь программы чтения с экрана (и все остальные) не увидят его, потому что он больше не существует.
Попробуй это
$("#ui-dialog-title-divid").parent().hide();
заменить divid
на соответствующийid
Эта следующая форма устранила мне проблему.
$('#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>
Я думаю, что самый чистый способ сделать это - создать новый виджет myDialog, состоящий из диалогового виджета без кода заголовка. Уничтожение штрих-кода заголовка выглядит просто.
https://github.com/jquery/jquery-ui/blob/master/ui/jquery.ui.dialog.js
Это помогло мне скрыть строку заголовка диалогового окна:
$(".ui-dialog-titlebar" ).css("display", "none" );
Вот как это можно сделать.
Перейдите в папку с темами -> base -> open 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;
}
Теперь приходит кнопка закрытия, вы также можете установить его нет или вы можете установить его
.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})
.dialogs()
и эти настройки нужны только 1 или около того, то есть альтернативные маршруты, чем глобальное применение настроек таким способом.
Вы пробовали решение из документов JQuery UI? https://api.jqueryui.com/dialog/#method-open
Как говорится, вы можете сделать это так ...
В CSS:
.no-titlebar .ui-dialog-titlebar {
display: none;
}
В JS:
$( "#dialog" ).dialog({
dialogClass: "no-titlebar"
});
Вы можете удалить панель со значком закрытия с помощью описанных выше техник, а затем добавить значок закрытия самостоятельно.
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');
});
перейдите к вашему jquery-ui.js (в моем случае jquery-ui-1.10.3.custom.js) и найдите this._createTitlebar (); и прокомментируй это.
теперь любой ваш диалог появится с заголовками. Если вы хотите настроить заголовок, просто перейдите к _createTitlebar (); и отредактируйте код внутри.
по