jQuery的UI对话框:如何初始化没有标题栏?
是否有可能打开没有标题栏的jQuery UI对话框?
我认为最好的解决scheme是使用选项dialogClass
。
jquery UI文档摘录:
在init中: $('.selector').dialog({ dialogClass: 'noTitleStuff' });
或者如果你想在初始化后。 :
$('.selector').dialog('option', 'dialogClass', 'noTitleStuff');
所以我创build了一个对话框,选项dialogClass ='noTitleStuff'和CSS这样的:
.noTitleStuff .ui-dialog-titlebar {display:none}
太简单 !! 但我花了1天的时间去思考为什么我以前的id-> class钻孔方法不起作用。 事实上,当你调用.dialog()
方法时,你转换的div变成了另一个div(真正的对话框div)的子元素,可能还是titlebar
div的“兄弟”,所以很难从前者开始寻找后者。
我想出了一个修复dynamic删除标题栏。
$("#example").dialog(dialogOpts); // remove the title bar $(".ui-dialog-titlebar").hide();
这将在对话框呈现后删除类“ui-dialog-titlebar”的所有元素。
我在我的项目中使用这个
$("#myDialog").dialog(dialogOpts); // remove the title bar $("#myDialog").siblings('div.ui-dialog-titlebar').remove(); // one liner $("#myDialog").dialog(dialogOpts).siblings('.ui-dialog-titlebar').remove();
我相信你可以用CSS隐藏它:
.ui-dialog-titlebar { display: none; }
或者,您可以使用dialogClass
选项将其应用于特定的对话框:
$( "#createUserDialog" ).dialog({ dialogClass: "no-titlebar" });
.no-titlebar .ui-dialog-titlebar { display: none; }
检查“ 主题 ”对话框。 上面的build议使用了dialogClass
选项,该选项似乎已经出来,以支持新的方法。
这对我工作:
$("#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();
这样就不需要在对话框中添加额外的类,只需直接点击即可。 对我来说工作很好。
我发现它更有效率,更可读性,使用打开的事件,并从那里隐藏标题栏。 我不喜欢使用页面全局类名search。
open: function() { $(this).closest(".ui-dialog").find(".ui-dialog-titlebar:first").hide(); }
简单。
在初始化对话框时,可以使用jQuery来在使用dialogClass之后隐藏标题栏。
初始化期间:
$('.selector').dialog({ dialogClass: 'yourclassname' }); $('.yourclassname div.ui-dialog-titlebar').hide();
通过使用这种方法,你不需要改变你的CSS文件,这也是dynamic的。
我喜欢重写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();
隐藏对话框标题栏时发现的一件事就是,即使不显示,屏幕阅读器仍会将其读取。 如果您已经添加了自己的标题栏,则会同时读取,导致混淆。
我所做的是使用$(selector).remove()
从DOM中删除它。 现在屏幕阅读器(和其他人)不会看到它,因为它不再存在。
尝试这个
$("#ui-dialog-title-divid").parent().hide();
用相应的id
replacedivid
我认为最简单的方法是创build一个新的myDialog小部件,由对话框小部件组成,不包括标题栏。 删除标题条码看起来很简单。
https://github.com/jquery/jquery-ui/blob/master/ui/jquery.ui.dialog.js
这工作对我来说隐藏对话框标题栏:
$(".ui-dialog-titlebar" ).css("display", "none" );
这是如何做到的。
转到主题文件夹 – >基地 – >打开jquery.ui.dialog.css
找
以下
如果你不想显示titleBar然后简单地设置display:none,就像我在下面做的那样。
.ui dialog.ui-dialog .ui-dialog-titlebar { padding: .4em 1em; position: relative; display:none; }
Samilarly的标题也是如此。
.ui-dialog .ui-dialog-title { float: left; margin: .1em 0; white-space: nowrap; width: 90%; overflow: hidden; text-overflow: ellipsis; display:none; }
现在closuresbutton,你也可以设置它没有或者你可以设置它
.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; }
我做了很多的search,但没有什么,然后我在脑海里有这个想法。 但是,这将影响整个应用程序没有closuresbutton,对话框的标题栏,但你可以克服这一点,以及通过使用jQuery和通过jQuery添加和设置CSS
这是这个语法
$(".specificclass").css({display:normal})
这下一个表格解决了我的问题。
$('#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>
你可以使用上面描述的技术去除带有closures图标的酒吧,然后自己添加一个closures图标。
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)并searchthis._createTitlebar(); 并发表评论。
现在你的任何一个对话框都会显示标题。 如果你想自定义标题只需去_createTitlebar(); 并编辑里面的代码。
通过