web-dev-qa-db-ja.com

jQuery UIダイアログタイトルのアイコン

以下のコードを使用して、jQueryダイアログボックスを作成しています。デフォルトでは、タイトルバーに閉じるアイコンがありますが、さまざまな機能のために、タイトルバーに他のアイコンをいくつか追加したいと思います。

ダイアログボックスに使用されるコードは次のとおりです。

$("document").ready(function () {
    $("#dialog").dialog({
        title: "Dialog Title",
        height: 400,
        width: 500
    });
});

次の.cssファイルと.jsファイルを使用しています。

<link type="text/css" href="jquery-ui-1.7.3.custom.css" rel="stylesheet" />
<script type="text/javascript" src="jquery-1.3.2.js"></script>
<script type="text/javascript" src="jquery-ui-1.7.3.custom.min.js"></script>
21
solipps

ダイアログボックスを作成するときに、titleオプションでHTMLを定義できます。したがって、既存のjQuery UIアイコンスプライトを使用して、次のJavascriptを使用できます。


JQuery UI 1.10.0の場合

Bug#6016 に従って、文書化されていない_title関数をオーバーライドして、title属性がエスケープされないようにする必要があります。

var dialog = $("#dialog").dialog();

dialog.data( "uiDialog" )._title = function(title) {
    title.html( this.options.title );
};

dialog.dialog('option', 'title', '<span class="ui-icon ui-icon-home"></span> Example Dialog');

古いバージョンの場合

$("#dialog").dialog({
    title: '<span class="ui-icon ui-icon-home"></span> Example Dialog'
});

そしてこのCSS

.ui-dialog .ui-dialog-title .ui-icon {
    float: left;
    margin-right: 4px;
}

ダイアログのタイトルにアイコンを追加します。 jQuery UIアイコンの完全なセットは、ここで確認できます。 http://jqueryui.com/themeroller/

この動作をライブで確認するには、以下を参照してください。 http://jsfiddle.net/XkSu9/ (jQuery UI 1.10+)または http://www.jsfiddle.net/yijiang/UYMJH / (古いバージョン)

38
Yi Jiang

これは、ダイアログが開いたときにタイトルバーにHTMLコードを追加することで実行できます。

$("document").ready(function () {
        $("#dialog").dialog({
            title: "Dialog Title",
            height: 400,
            width: 500,
            open: function(event, ui){
                $(this).parent().find('.ui-dialog-titlebar').append('Some HTML');
            }
        });
    });
4
Minh Nguyen

より簡単な方法。スタイルシートで:

.ui-dialog .ui-dialog-title {
  background-image: url('/icons/info.png');
  background-repeat: no-repeat;
  padding-left: 20px;
}

これは16x16画像用です。

3
Rob

以下は、一度に1つのオブジェクトではなく、jQuery UI 1.10.0ダイアログタイトルの問題をグローバルに解決する方法です。

jQuery.widget('ui.dialog', jQuery.extend({}, jQuery.ui.dialog.prototype, {
    _title: function(titleBar) {
        titleBar.html(this.options.title || '&#160;');
    }
}));

今度はダイアログウィジェットを通常どおり使用すると、タイトルがエスケープされなくなります。

3
Zectbumo

私はこのようにしました:

_<script type="text/javascript" language="javascript">
    function MsgBox() {
        var arg = arguments;
        /*
        [arg]
        0 = message
        1 = title
        2 = width
        3 = height
        4 = command to evaluete if Ok is clicked (optional)
        */
        $("body").append("<div id=\"dlgMsg\" title=\"" + arg[1] + "\">" + arg[0] + "</div>");
        $("#dlgMsg").dialog({
            autoOpen: false,
            modal: true,
            bgiframe: true,
            width: arg[2],
            height: arg[3],
            close: function (event, ui) { $(this).dialog("destroy").remove(); },
            buttons:{ 
                    'OK': function () { if (arg[4]) eval(arg[4]); $(this).dialog("close"); }
                    }
        });

        $("#dlgMsg").dialog('open');
        return false;
    }
</script>
_

使用法:MsgBox("Hello, I'm a MessageBox!", "Title Here", 400, 200);

または

MsgBox("Hello, I'm a MessageBox!", "Title Here", 400, 200, "alert('hey, you clicked Ok!')");

あなたは同様にUIアイコンでそれを改善するかもしれません...

2
Youkko