Иконки в заголовке диалогового окна jQuery
Я использую следующий код для создания диалогового окна 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>
Ответы
Ответ 1
Вы можете определить HTML в опции title
при создании диалогового окна. Поэтому, используя существующие иконки значков jQuery UI, мы можем использовать этот Javascript:
Для jQuery UI 1.10.0
Вам необходимо переопределить недокументированную функцию _title
в соответствии с Ошибка # 6016, чтобы гарантировать, что атрибут 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: http://jqueryui.com/themeroller/
Чтобы посмотреть, как это работает, смотрите: http://jsfiddle.net/XkSu9/ (jQuery UI 1.10+) или http://www.jsfiddle.net/yijiang/UYMJH/ (старая версия)
Ответ 2
Это можно сделать, добавив некоторый код 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');
}
});
});
Ответ 3
Вот как вы решаете проблему с названием заголовка jQuery UI 1.10.0 во всем мире вместо одного объекта за раз:
jQuery.widget('ui.dialog', jQuery.extend({}, jQuery.ui.dialog.prototype, {
_title: function(titleBar) {
titleBar.html(this.options.title || ' ');
}
}));
Теперь используйте виджет диалогового окна, как обычно, и ваши заголовки больше не будут экранированы.
Ответ 4
Я сделал это следующим образом:
<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-значков...
Ответ 5
Более простой метод. В таблице стилей:
.ui-dialog .ui-dialog-title {
background-image: url('/icons/info.png');
background-repeat: no-repeat;
padding-left: 20px;
}
Это изображение 16x16.