【发布时间】:2010-11-04 14:47:55
【问题描述】:
是否可以打开没有标题栏的 jQuery UI 对话框?
【问题讨论】:
是否可以打开没有标题栏的 jQuery UI 对话框?
【问题讨论】:
我认为最好的解决方案是使用选项dialogClass。
来自 jquery UI 文档的摘录:
在初始化期间:$('.selector').dialog({ dialogClass: 'noTitleStuff' });
或者如果你想在初始化之后。 :
$('.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 选项,它似乎在it's way out 上支持一种新方法。
【讨论】:
我在我的项目中使用它
$("#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() or $("#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:
这样就可以得到Dialog 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(); }
简单。
【讨论】:
初始化对话框时使用dialogClass后可以使用jquery隐藏标题栏。
在初始化期间:
$('.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
});
【讨论】:
如果你有多个对话框,你可以使用这个:
$("#the_dialog").dialog({
open: function(event, ui) {
//hide titlebar.
$(this).parent().children('.ui-dialog-titlebar').hide();
}
});
【讨论】:
这是最简单的方法,它只会删除那个特定对话框中的标题栏;
$('.dialog_selector').find('.ui-dialog-titlebar').hide();
【讨论】:
我在隐藏 Dialog 标题栏时发现的一件事是,即使 display 不显示,屏幕阅读器仍然会选择它并阅读它。如果您已经添加了自己的标题栏,它将同时读取这两个标题栏,从而造成混乱。
我所做的是使用 $(selector).remove() 从 DOM 中删除它。现在屏幕阅读器(以及其他所有人)将看不到它,因为它不再存在。
【讨论】:
试试这个
$("#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--> 打开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 并通过 jquery 添加和设置 css 来克服这个问题
这里是语法
$(".specificclass").css({display:normal})
【讨论】:
.dialogs() 并且只有 1 个左右需要这些设置,那么除了以这种方式全局应用设置之外,还有其他替代方法.
对我来说,我仍然想使用可调整大小的角,只是不想看到对角线。我用过
$(".ui-resizable-handle").css("opacity","0");
刚刚意识到我在评论错误的问题。不辜负我的同名:(
【讨论】:
您是否尝试过 jQuery UI 文档中的解决方案? https://api.jqueryui.com/dialog/#method-open
正如它所说,你可以这样做......
在 CSS 中:
.no-titlebar .ui-dialog-titlebar {
display: none;
}
在 JS 中:
$( "#dialog" ).dialog({
dialogClass: "no-titlebar"
});
【讨论】:
这对我有用
open: function(event, ui) {
$(".ui-dialog-titlebar", $(this).parent())
.hide();
完整
$speedbump.dialog({
dialogClass: 'speedbump-container',
autoOpen: false,
closeOnEscape: false,
modal: true,
resizable: false,
draggable: false,
create: function () {
$speedbump
.closest('.ui-dialog')
.attr('id', 'speedbump-container');
},
open: function(event, ui) {
$(".ui-dialog-titlebar", $(this).parent())
.hide();
}
【讨论】:
您可以使用上述技术删除带有关闭图标的栏,然后自己添加一个关闭图标。
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();并编辑里面的代码。
通过
【讨论】: