Значки кнопок диалогового окна jQuery UI
Можно ли добавлять значки к кнопкам в диалоговом окне JQuery UI? Я пробовал делать это следующим образом:
$("#DeleteDialog").dialog({
resizable: false,
height:150,
modal: true,
buttons: {
'Delete': function() {
/* Do stuff */
$(this).dialog('close');
},
Cancel: function() {
$(this).dialog('close');
}
},
open: function() {
$('.ui-dialog-buttonpane').find('button:contains("Cancel")').addClass('ui-icon-cancel');
$('.ui-dialog-buttonpane').find('button:contains("Delete")').addClass('ui-icon-trash');
}
});
Селекторы в открытой функции, похоже, работают нормально. Если я добавлю следующее "открыть":
$('.ui-dialog-buttonpane').find('button:contains("Delete")').css('color', 'red');
тогда я получаю кнопку "Удалить" с красным текстом. Это неплохо, но мне бы очень хотелось, чтобы этот маленький хлам мог справиться и с кнопкой "Удалить".
Edit:
Я сделал пару настроек к принятому ответу:
var btnDelete = $('.ui-dialog-buttonpane').find('button:contains("Delete")');
btnDelete.prepend('<span style="float:left; margin-top: 5px;" class="ui-icon ui-icon-trash"></span>');
btnDelete.width(btnDelete.width() + 25);
Добавление некоторого верхнего поля подталкивает значок вниз, поэтому он выглядит вертикально по центру. Добавление 25 px к ширине кнопки удерживает текст кнопки от упаковки на второй строке.
Ответы
Ответ 1
Попробуйте эту строку, чтобы добавить значок корзины в кнопку удаления. Спрайт должен быть в отдельном элементе.
$('.ui-dialog-buttonpane').find('button:contains("Delete")').prepend('<span style="float:left;" class="ui-icon ui-icon-trash"></span>');
Чтобы предотвратить появление значка в верхней части кнопки:
$('.ui-dialog-buttonpane')
.find('button:contains("Delete")')
.removeClass('ui-button-text-only')
.addClass('ui-button-text-icon-primary')
.prepend('<span class="ui-icon ui-icon-trash"></span>');
Ответ 2
i 'пробовал это, и он работает:)
[....]
open: function() {
$('.ui-dialog-buttonpane').
find('button:contains("Cancel")').button({
icons: {
primary: 'ui-icon-cancel'
}
});
[....]
Ответ 3
Настроено с помощью jQuery UI 1.10
Начиная с jQuery UI версии 1.10.0, можно четко указать значки кнопок, не прибегая к open
обработчикам событий. Синтаксис:
buttons: [
{
text: "OK",
icons: { primary: "ui-icon-check" }
},
{
text: "Cancel",
icons: { primary: "ui-icon-closethick" }
}
]
Также можно указать значок secondary
.
Посмотрите на действие.
Ответ 4
также вы можете добавить id или другой attr к кнопке, например:
buttons:[
{
text: "Close",
id: "closebtn",
click: function() { $(this).dialog("close"); }
}
],
open: function() {
$("#closebtn").button({ icons: { primary: "ui-icon-close" } });
}
Ответ 5
Эта версия работает, не беспокоясь о тексте в кнопках
open: function() {
$(this).parent().find('.ui-dialog-buttonpane button:first-child').button({
icons: { primary: 'ui-icon-circle-close' }
});
$(this).parent().find('.ui-dialog-buttonpane button:first-child').next().button({
icons: { primary: 'ui-icon-circle-check' }
});
}
Ответ 6
Вот что я использую. Назначьте идентификатор интересующей кнопке во время определения начального диалога:
buttons:
[
{
id: "canxButton",
text: "Cancel",
icons: {
primary: "ui-icon-cancel"
},
click: function () { ...
Затем вы можете изменить текст/значок следующим образом:
$("#canxButton").button("option", "label", "Done");
$("#canxButton").button({ icons: {primary: "ui-icon-close"} });
Ответ 7
назначить высоту ".ui-dialog.ui-button", как показано ниже:
.ui-dialog .ui-button {
height:36px;
}
.ui-icon-kl_exit {
height:32px;
width:32px;
display:block;
background-image: url('../icons/exit32.ico');
}
Ответ 8
Просто обновление, так как я столкнулся с необходимостью сделать это сам.
У меня есть несколько диалогов, у которых есть одна и та же кнопка закрытия, поэтому полезно поговорить о том, как разместить иконки непосредственно в диалоговом окне, на которое вы хотите повлиять, на всякий случай, если вам понадобится значок на кнопке в другом диалог, содержащий один и тот же текст.
Также в выбранном решении фактически отсутствуют несколько уже определенных классов CSS, которые исправили бы позиционную проблему.
Следующий код должен выполнить именно то, что было желательно в исходном вопросе, с немного большей точностью. Если вы хотите применить один и тот же значок корзины ко всем диалоговым окнам с помощью кнопки "Удалить", изменение этого параметра: $('# DeleteDialog'). Сегмент parent() в $('. Ui-dialog-buttonpane') достигнет этой цели:
$('#DeleteDialog').parent()
.find('button:contains("Delete")')
.removeClass('ui-button-text-only')
.addClass('ui-button-text-icon-primary ui-button-text-icon')
.prepend('<span class="ui-button-icon-primary ui-icon ui-icon-trash"></span>');
Ответ 9
Или, если вы не хотите влиять на другие диалоги,
open: function() {
$(this).parent().find('.ui-dialog-buttonpane button:contains("Cancel")').button({
icons: { primary: 'ui-icon-circle-close' }
});
$(this).parent().find('.ui-dialog-buttonpane button:contains("Ok")').button({
icons: { primary: 'ui-icon-circle-check' }
});
}
Ответ 10
Я столкнулся с тем же вопросом. Кажется, что jquery хранит текст в атрибуте "текст" в самой кнопке, а не как текст внутри кнопки.
Я решил это так:
$dialog.dialog({
resizable:false,
draggable:false,
modal:true,
open:function (event, ui) {
$(this).parents('.ui-dialog').find('.cancel.ui-button').text('Cancel');
//or you could use: $(this).parents('.ui-dialog').find('button[text="Cancel"]').text('Cancel');
$(this).parents('.ui-dialog').find('.add.ui-button').text('OK');
},
buttons:[
{
text:"OK",
click:function () {
},
"class":"add"
},
{
text:"Cancel",
click:function () {
},
"class":"cancel"
}
]
});
Ответ 11
Как насчет подхода на основе классов?
В вашем файле _layout.cshtml
введите примерно следующее:
<script type="text/javascript">
$(function () {
stylizeButtons();
}
function stylizeButtons(parent) {
if (parent == undefined) {
parent = $("body");
}
// Buttons with icons
$(parent).find(".my-button-add").button({ icons: { primary: "ui-icon-plusthick"} });
$(parent).find(".my-button-cancel").button({ icons: { primary: "ui-icon-closethick"} });
$(parent).find(".my-button-delete").button({ icons: { primary: "ui-icon-closethick"} });
$(parent).find(".my-button-submit").button({ icons: { primary: "ui-icon-check"} });
$(parent).find(".my-button-export").button({ icons: { primary: "ui-icon-suitcase"} });
$(parent).find(".my-button-search").button({ icons: { primary: "ui-icon-search"} });
$(parent).find(".my-button-editicon").button({ icons: { primary: "ui-icon-pencil"} });
$(parent).find(".my-button-edit").button({ icons: { primary: "ui-icon-pencil"} });
$(parent).find(".my-button-back").button({ icons: { primary: "ui-icon-arrowthick-1-w"} });
$(parent).find(".my-button-previous").button({ icons: { primary: "ui-icon-carat-1-w"} });
$(parent).find(".my-button-next").button({ icons: { primary: "ui-icon-carat-1-e"} });
$(parent).find(".my-button-history").button({ icons: { primary: "ui-icon-bookmark"} });
$(parent).find(".my-button-reports").button({ icons: { primary: "ui-icon-calculator"} });
}
</script>
Затем в файле, где вы создаете диалог, сделайте что-то вроде этого:
$("#doStuff-dialog").dialog({
title: "Do Some Stuff",
modal: true,
buttons: [
{
text: "Yes",
class: "my-button-submit",
click: function () {
$(this).dialog("close");
}
},
{
text: "No",
class: "my-button-cancel",
click: function () {
$(this).dialog("close");
}
}
],
open: function () {
stylizeButtons($("#doStuff-dialog").parent());
}
});
Тогда вам никогда не придется полагаться на поиск текста, и для этого требуется минимальное количество кода в вашем диалоговом окне. Я использую это во всех своих приложениях для применения стиля jQuery UI/значков к кнопкам, просто предоставляя им класс.
Ответ 12
В соответствии с диалоговым окном опция позволяет передавать объект или массив параметров; последний позволяет вам настроить кнопки:
Кнопки
Тип: Объект или массив
По умолчанию: []
Поддерживаются несколько типов:
- Объект. Ключами являются ярлыки кнопок, а значения - это обратные вызовы при нажатии соответствующей кнопки.
- Массив. Каждый элемент массива должен быть объектом, определяющим атрибуты, свойства и обработчики событий для установки на кнопке. В Кроме того, клавиша
icons
может использоваться для управления значками кнопок, а клавиша showText
может использоваться для управления текстом кнопки вариант.
$(function() {
var buttons = [];
buttons.push({
text: "Yes",
// icon options
icons: { primary: "ui-icon-check" },
// attributes
"class": "hawt-button",
title: "Aye!"
});
buttons.push({
text: "Yes to All",
icons: { secondary: "ui-icon-check" }
});
buttons.push({
text: "Please",
icons: { primary: "ui-icon-notice" },
// text options
showText: false
});
buttons.push({
text: "Cancel",
icons: { secondary: "ui-icon-close" },
// properties
disabled: true
});
$("#dialog").dialog({
width: "auto",
buttons: buttons
});
});
@import url("http://code.jquery.com/ui/1.11.4/themes/smoothness/jquery-ui.min.css");
.ui-button.hawt-button {
color: hotpink;
}
<script src="http://code.jquery.com/jquery-1.11.3.min.js"></script>
<script src="http://code.jquery.com/ui/1.11.4/jquery-ui.min.js"></script>
<div id="dialog" title="Confirmation">
<p>Delete all files from your hard drive?</p>
</div>