web-dev-qa-db-ja.com

jquery UIダイアログ:タイトルバーなしで初期化する方法は?

タイトルバーなしでjQuery UIダイアログを開くことはできますか?

248
Loony2nz

タイトルバーを動的に削除するための修正を見つけました。

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

これにより、ダイアログボックスがレンダリングされた後、クラス 'ui-dialog-titlebar'を持つすべての要素が削除されます。

96
Loony2nz

最善の解決策は、オプションdialogClassを使用することだと思います。

Jquery UIドキュメントからの抜粋:

初期化中:$('.selector').dialog({ dialogClass: 'noTitleStuff' });

または、initの後に必要な場合。 :

$('.selector').dialog('option', 'dialogClass', 'noTitleStuff');

だから私はオプションdialogClass = 'noTitleStuff'とそのようなCSSでいくつかのダイアログを作成しました:

.noTitleStuff .ui-dialog-titlebar {display:none}

単純すぎます !!しかし、以前のid-> classドリル方法が機能しなかった理由を考えるのに1日かかりました。実際、.dialog()メソッドを呼び出すと、変換するdivは別のdiv(実際のダイアログdiv)の子になり、titlebar divの「兄弟」になる可能性があるため、前者から始めて後者を見つけるのは非常に困難です。

286
mizar

私はあなたがCSSでそれを隠すことができると信じています:

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

または、dialogClassオプションを使用して、これを特定のダイアログに適用できます。

$( "#createUserDialog" ).dialog({
    dialogClass: "no-titlebar"
});
.no-titlebar .ui-dialog-titlebar {
    display: none;
}

Theming 」ダイアログをチェックしてください。上記の提案はdialogClassオプションを利用します。これは out out にあり、新しいメソッドを支持しています。

59
Sampson

私は自分のプロジェクトでこれを使用します

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

これは私のために働いた:

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

使用してみてください

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

これにより、すべてのダイアログタイトルが非表示になります

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

実際には、ダイアログwidgetを直接使用する別の方法があります。

このようにしてダイアログウィジェットを取得できます

$("#example").dialog(dialogOpts);
$dlgWidget = $('#example').dialog('widget');

してから

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

そのダイアログ内でのみtitlebarを非表示にする

そして、1行のコードで(チェーンが好きです):

$('#example').dialog('widget').find(".ui-dialog-titlebar").hide();

この方法でダイアログに追加のクラスを追加する必要はありません。直接アクセスするだけです。私にとってはうまくいく。

7
odedbd

openイベントを使用し、そこからタイトルバーを非表示にすると、より効率的で読みやすくなります。ページ全体のクラス名検索を使用するのは好きではありません。

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

シンプル。

5

ダイアログを初期化するときにdialogClassを使用した後、jqueryを使用してタイトルバーを非表示にできます。

初期化中:

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

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

この方法を使用すると、cssファイルを変更する必要がなく、これも動的です。

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
});
4
Andrej Kaurin

複数のダイアログがある場合、これを使用できます。

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

これが最も簡単な方法であり、特定のダイアログのタイトルバーのみを削除します。

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

Dialogのタイトルバーを非表示にしたときに発見したことの1つは、ディスプレイがなくても、スクリーンリーダーがそれを拾い上げて読み上げることです。すでに独自のタイトルバーを追加している場合は、両方が表示されるため、混乱が生じます。

$(selector).remove()を使用してDOMから削除しました。現在、スクリーンリーダー(および他のすべてのユーザー)は、もう存在しないので、それを表示しません。

2
user616258

これを試して

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

dividを対応するidに置き換えます

2

これは、ダイアログボックスのタイトルバーを非表示にするのに役立ちました。

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

これがそれを行う方法です。

テーマフォルダに移動します->ベース-> 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})
1

この次のフォームで問題が解決しました。

$('#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>
1
jcromeros1987

最もクリーンな方法は、ダイアログウィジェットからタイトルバーコードを除いた新しいmyDialogウィジェットを作成することだと思います。タイトルバーコードの削除は簡単です。

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

1
Joffer

私にとっては、リサイズ可能なコーナーを使用したかったのですが、対角線が見えないようにしたかっただけです。使った

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

間違った質問にコメントしていることに気付いた。私の名にふさわしい:(

0
controlZ