Применить CSS для кнопок диалоговых окон с помощью jQuery
поэтому в настоящее время у меня есть диалог jQuery с двумя кнопками: сохранить и закрыть. Я создаю диалог, используя код ниже:
$dialogDiv.dialog({
autoOpen: false,
modal: true,
width: 600,
resizable: false,
buttons: {
Cancel: function() {
// Cancel code here
},
'Save': function() {
// Save code here
}
},
close: function() {
// Close code here (incidentally, same as Cancel code)
}
});
однако при использовании этого кода обе кнопки имеют одинаковый цвет. Я бы хотел, чтобы моя кнопка отмены была другого цвета, чем мое сохранение. Есть ли способ сделать это с помощью некоторых встроенных параметров jQuery? Я не получил большой помощи от документации.
обратите внимание, что кнопка отмены, которую я создаю, является предопределенным типом, но "сохранить" я определяю себя. Не уверен, что это будет иметь какое-либо отношение к проблеме.
любая помощь будет оценили. Спасибо.
обновление: все сошлись на том, что здесь есть две дороги:
- Проверьте HTML с помощью Firefox плагин типа firebug и отметить классы CSS, которые jQuery применяясь к кнопкам, возьмите ударьте по преодолению их. Примечание: in мой HTML, обе кнопки были использованы точно такие же классы CSS и нет уникального Идентификаторы, так что эта опция была отключена.
- использовать селектор jQuery при открытии диалога чтобы поймать кнопку, которую я хотел, и добавьте к нему класс CSS.
Я пошел со вторым вариантом и использовал метод jQuery find (), поскольку я думаю, что это более целесообразно, чем использование :first или :first-child b/c кнопка, которую я хотел изменить, не обязательно была первой кнопкой, указанной в разметке. Используя find, я могу просто указать имя кнопки и добавить CSS такой образ. Код, который я получил ниже:
$dialogDiv.dialog({
autoOpen: false,
modal: true,
width: 600,
resizable: false,
buttons: {
Cancel: function() {
// Cancel code here
},
'Save': function() {
// Save code here
}
},
open: function() {
$('.ui-dialog-buttonpane').find('button:contains("Cancel")').addClass('cancelButtonClass');
}
close: function() {
// Close code here (incidentally, same as Cancel code)
}
});
10 ответов:
Я перепроведение мой ответ: на аналогичный вопрос, потому что никто, кажется, не дал его здесь, и это намного чище и аккуратнее:
использовать альтернативный
buttons
синтаксис:$dialogDiv.dialog({ autoOpen: false, modal: true, width: 600, resizable: false, buttons: [ { text: "Cancel", "class": 'cancelButtonClass', click: function() { // Cancel code here } }, { text: "Save", "class": 'saveButtonClass', click: function() { // Save code here } } ], close: function() { // Close code here (incidentally, same as Cancel code) } });
вы можете использовать обработчик событий open для применения дополнительного стиля:
open: function(event) { $('.ui-dialog-buttonpane').find('button:contains("Cancel")').addClass('cancelButton'); }
Я думаю, что есть два способа справиться с этим:
- Проверьте, используя что-то вроде firebug, если есть разница (в классе, id и т. д.) между двумя кнопками и использовать это для решения конкретной кнопки
- Используйте что-то вроде :первый ребенок, чтобы выбрать, например, первую кнопку и стиль, что один по-другому
когда я смотрю на источник с Firebug для одного из моих диалогов, получается что-то вроде:
<div class="ui-dialog-buttonpane ui-widget-content ui-helper-clearfix"> <button class="ui-state-default ui-corner-all ui-state-focus" type="button">Send</button> <button class="ui-state-default ui-corner-all" type="button">Cancel</button> </div>
Так Я например, можно обратиться к кнопке отправки, добавив некоторые стили в .пользовательского интерфейса-государства-фокус (возможно, с некоторыми дополнительными селекторами, чтобы убедиться, что я переопределяю стили jquery).
кстати, Id идет на второй вариант в этом случае, чтобы избежать проблем при изменении фокуса...
вы должны изменить слово " className "на"class"
buttons: [ { text: "Cancel", class: 'ui-state-default2', click: function() { $(this).dialog("close"); } } ],
выберите div, который имеет диалоговое окно роли, затем получите соответствующие кнопки в нем и установите CSS.
$("div[role=dialog] button:contains('Save')").css("color", "green"); $("div[role=dialog] button:contains('Cancel')").css("color", "red");
существует также простой ответ для определения конкретных стилей, которые будут применяться только к этой конкретной кнопке, и вы можете объявить стиль элемента Jquery при объявлении диалогового окна:
id: "button-delete", text: "Delete", style: "display: none;", click: function () {}
после этого вот что показывает html:
это позволяет установить его, но это не всегда легко изменить с помощью jQuery позже.
Почему бы просто не проверить сгенерированную разметку, отметить класс на кнопке выбора и стилизовать его самостоятельно?