jquery UI对话框:如何在没有标题栏的情况下初始化?

时间:2009-06-21 02:39:39

标签: jquery jquery-ui

是否可以打开没有标题栏的jQuery UI对话框?

22 个答案:

答案 0 :(得分:286)

我认为最好的解决方案是使用选项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)的孩子,可能是titlebar div的'兄弟',所以很难找到后者从前者开始。

答案 1 :(得分:96)

我找到了动态删除标题栏的修复方法。

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

在渲染对话框后,这将删除所有带有'ui-dialog-titlebar'类的元素。

答案 2 :(得分:59)

我相信你可以用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上,支持新方法。

答案 3 :(得分:55)

我在我的项目中使用它

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

答案 4 :(得分:14)

这对我有用:

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

答案 5 :(得分:9)

尝试使用

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

这将隐藏所有对话标题

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

答案 6 :(得分:7)

实际上还有另一种方法,直接使用对话框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();

无需以这种方式向对话框添加额外的类,只需直接进行操作即可。对我来说工作很好。

答案 7 :(得分:5)

我发现使用 open 事件更有效,更易读,并从那里隐藏标题栏。我不喜欢使用页面全局类名搜索。

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

简单。

答案 8 :(得分:4)

我喜欢覆盖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
});

答案 9 :(得分:4)

初始化对话框后,可以在使用dialogClass后使用jquery隐藏标题栏。

在init期间:

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

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

通过使用此方法,您无需更改css文件,这也是动态的。

答案 10 :(得分:4)

如果您有多个对话框,可以使用:

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

答案 11 :(得分:3)

这是最简单的方法,它只会删除该特定对话框中的标题栏;

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

答案 12 :(得分:2)

我在隐藏Dialog标题栏时发现的一件事是,即使显示为无,屏幕阅读器仍然会将其读取并将其读取。如果您已经添加了自己的标题栏,则会同时读取这两个标题栏,从而导致混淆。

我所做的是使用$(selector).remove()将其从DOM中删除。现在,屏幕阅读器(以及其他所有人)都不会看到它,因为它不再存在。

答案 13 :(得分:2)

试试这个

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

divid替换为相应的id

答案 14 :(得分:1)

我认为最干净的方法是创建一个新的myDialog小部件,其中包含对话框小部件减去标题条形码。删除标题条形码看起来很简单。

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

答案 15 :(得分:1)

这对我来说隐藏了对话框标题栏:

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

答案 16 :(得分:1)

这是怎么做的。

转到主题文件夹 - >基 - >打开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; 
}

现在关闭按钮你也可以设置为无或你可以设置它

.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})

答案 17 :(得分:0)

对我来说,我仍然想要使用重新调整大小的角落,只是不想这样看到对角线。我用了

$(".ui-resizable-handle").css("opacity","0");

刚才意识到我正在评论错误的问题。辜负我的同名:(

答案 18 :(得分:0)

您是否尝试过jQuery UI文档中的解决方案? https://api.jqueryui.com/dialog/#method-open

正如您所说的,您可以这样做...

在CSS中:

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

在JS中:

$( "#dialog" ).dialog({
  dialogClass: "no-titlebar"
});

答案 19 :(得分:0)

这对我有用

 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();
}

答案 20 :(得分:-1)

您可以使用带有上述技术的关闭图标删除栏,然后自行添加关闭图标。

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');
     });

答案 21 :(得分:-1)

转到你的jquery-ui.js(在我的例子中是jquery-ui-1.10.3.custom.js)并搜索this._createTitlebar();并评论它。

现在你的任何人都会出现标题。如果要自定义标题,只需转到_createTitlebar();并编辑里面的代码。

通过