Ответы:
Я думаю, что лучшим решением является использование этой опции 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 диалогового окна) и, возможно, «братом» titlebardiv, поэтому очень трудно попытаться найти последний, начиная с первого.
Я нашел решение для динамического удаления строки заголовка.
$("#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 (); и отредактируйте код внутри.
по