ダイアログ ボックスの ui-dialog-titlebar に画像を追加することは可能ですか?.
5 に答える
確かにそうです。サイジングと配置の点で見栄えを良くすることは、難しい部分です. ただし、タイトルバーに画像を配置するのは次のように簡単です。
$(".ui-dialog-titlebar").append("<img src='felix.gif' id='myNewImage' />");
編集:
ニックが以下で言ったことに基づいて構築します(乾杯)、本当にハードコアになりたい場合は、ダイアログのオープンイベント内にコードを配置します。つまり:
$(".putSelectorHere").dialog({
open: function(event, ui) {
$(".ui-dialog-titlebar").append("<img src='felix.gif' id='myNewImage' />");
}
});
関連するドキュメントをクリックしてください。
使用する場合
$(".ui-dialog-titlebar").append("<img src='felix.gif' id='myNewImage' />");
オープンイベントで、最初にfelix.gifを削除します
$(".ui-dialog-titlebar").remove("#myNewImage");
ダイアログボックスを複数回開くと、同じ画像が複数回追加されるか、ダイアログボックスが破棄されるためです
これらはすべて本当に良い答えです。小さくて重要な機能が 1 つ見落とされているように感じたので、ソリューションを投入します。
コードをイベントに「バインド」できます。私は怠け者なので、.live() コンビニエンス バインドを使用します。これにより、特殊化されたすべてのコードをどこにでも放り込むことができます。
これを使ってみてください
<script type="text/javascript">
function initPopups()
{
<!-- this is a 'close' handler for all of my modal popups-->
$('.ui-widget-overlay').live('click',function(){$('.YOURCLASS').dialog('destroy');});
<!-- this puts the lil logo in all of the popup dialog titlebars -->
$('.YOURCLASS').live('dialogcreate',function(){$('.ui-dialog-titlebar').append("<img id='my-img' src='THEIMG.png'/>");});
}
<!-- run the scripts once the doc is done loading -->
$(document).ready(initPopups());
</script>
次に、img id を使用して関連するすべての CSS を操作し、見栄えを良くします
「createdialog」イベントと「click」イベントの両方を .live() への 1 回の呼び出しに入れると、これをクリーンアップできます。ここで API を確認してください: JQuery .live()
タイトルバーをもう少し凝ったものにしたいと思うかもしれません (それが私がここにたどり着いた方法です)。jQuery.load('FANCY-TITLEBAR.xml');
を .append() だけでなく使用することをお勧めします.append('GIANT-BLOCK-OF-MARKUP);
これは、css に画像を追加するためのソリューションとして使用できます。以下は、私が自分で使用したコードの例です。
var $help = $('#dialog_help')
.dialog({
title: 'Help',
autoOpen: false,
draggable: false,
width: 200,
position: [100,100],
closeText: 'Close',
dialogClass: 'dialoghelp'
});
$('.openhelp').click(function() {
$help.dialog('open');
return false;
});
-dialogClass: 'dialoghelp'- を追加すると、CSS でダイアログ ウィンドウを次のようにカスタマイズできるようになりました。
この方法でできることは、最初にそこにあるメインの .ui-dialog を置き換え、それをカスタム クラスに置き換えることです。
.ui-dialog .ui-dialog-titlebar { padding: 3px; position: relative; background: red;}
//original
.dialoghelp .ui-dialog-titlebar { padding: 3px; position: relative; background: red;}
//adjusted
だから、画像の追加はこれでできると思います。
私は次のようなcssスタイルを使用しました:
.ui-dialog .ui-dialog-titlebar { background: transparent url(/path/to/images.gif) no-repeat top left; }
jquery-ui.cssの後に追加するスタイルシートにあります