タイトルバーなしでjQuery UIダイアログを開くことはできますか?
タイトルバーを動的に削除するための修正を見つけました。
$("#example").dialog(dialogOpts);
// remove the title bar
$(".ui-dialog-titlebar").hide();
これにより、ダイアログボックスがレンダリングされた後、クラス 'ui-dialog-titlebar'を持つすべての要素が削除されます。
最善の解決策は、オプション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の「兄弟」になる可能性があるため、前者から始めて後者を見つけるのは非常に困難です。
私はあなたがCSSでそれを隠すことができると信じています:
.ui-dialog-titlebar {
display: none;
}
または、dialogClass
オプションを使用して、これを特定のダイアログに適用できます。
$( "#createUserDialog" ).dialog({
dialogClass: "no-titlebar"
});
.no-titlebar .ui-dialog-titlebar {
display: none;
}
「 Theming 」ダイアログをチェックしてください。上記の提案はdialogClass
オプションを利用します。これは out 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();
これは私のために働いた:
$("#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
を非表示にする
そして、1行のコードで(チェーンが好きです):
$('#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のタイトルバーを非表示にしたときに発見したことの1つは、ディスプレイがなくても、スクリーンリーダーがそれを拾い上げて読み上げることです。すでに独自のタイトルバーを追加している場合は、両方が表示されるため、混乱が生じます。
$(selector).remove()
を使用してDOMから削除しました。現在、スクリーンリーダー(および他のすべてのユーザー)は、もう存在しないので、それを表示しません。
これを試して
$("#ui-dialog-title-divid").parent().hide();
divid
を対応するid
に置き換えます
これは、ダイアログボックスのタイトルバーを非表示にするのに役立ちました。
$(".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;
}
同様にタイトルも。
.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})
この次のフォームで問題が解決しました。
$('#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-resizable-handle").css("opacity","0");
間違った質問にコメントしていることに気付いた。私の名にふさわしい:(