アプリケーションでjqueryuiダイアログを使用しています。jqueryダイアログで「保存」ボタンと「キャンセル」ボタンのスタイルを変えるにはどうすればよいですか?したがって、「保存」は「キャンセル」よりも魅力的です。「キャンセル」にハイパーリンクを使用できますが、同じボタンパネルに配置するにはどうすればよいですか?
12 に答える
jQuery UI ダイアログ (バージョン 1.8 以降) でカスタム クラスを追加する方法は次のとおりです。
$('#foo').dialog({
'buttons' : {
'cancel' : {
priority: 'secondary', class: 'foo bar baz', click: function() {
...
},
},
}
});
jQueryUI 1.8.9では、動作するのclassName
ではなく使用しclasses
ます。
$('#element').dialog({
buttons:{
"send":{
text:'Send',
className:'save'
},
"cancel":{
text:'Cancel',
className:'cancel'
}
});
私は jQuery UI 1.8.13 を使用しており、必要に応じて次の構成が機能します。
var buttonsConfig = [
{
text: "Ok",
"class": "ok",
click: function() {
}
},
{
text: "Annulla",
"class": "cancel",
click: function() {
}
}
];
$("#foo").dialog({
buttons: buttonsConfig
// ...
ps: "class"は js の予約語なので、引用符で囲むことを忘れないでください。
この質問が投稿されてからしばらく経ちましたが、次のコードはすべてのブラウザーで機能します (MattPII
の回答は FFox と Chrome で機能しますが、IE ではスクリプト エラーがスローされることに注意してください)。
$('#foo').dialog({
autoOpen: true,
buttons: [
{
text: 'OK',
open: function() { $(this).addClass('b') }, //will append a class called 'b' to the created 'OK' button.
click: function() { alert('OK Clicked')}
},
{
text: "Cancel",
click: function() { alert('Cancel Clicked')}
}
]
});
以下のjqueryuiバージョン1.8.16の時点で、私はそれをどのように機能させましたか。
$('#element').dialog({
buttons: {
"Save": {
text: 'Save',
class: 'btn primary',
click: function () {
// do stuff
}
}
});
一度にページに 1 つのダイアログしかない場合は、これらのソリューションはすべて非常にうまく機能しますが、一度に複数のダイアログのスタイルを設定したい場合は、次の方法を試してください。
$("#element").dialog({
buttons: {
'Save': function() {},
'Cancel': function() {}
}
})
.dialog("widget")
.find(".ui-dialog-buttonpane button")
.eq(0).addClass("btnSave").end()
.eq(1).addClass("btnCancel").end();
ボタンをグローバルに選択する代わりに、ウィジェット オブジェクトを取得してそのボタン ペインを見つけ、各ボタンを個別にスタイルします。これにより、1 つのページに複数のダイアログがある場合に多くの手間が省けます
after looking at some other threads I came up with this solution to add icons to the buttons in a confirm dialog, which seems to work well in version 1.8.1 and can be modified to do other styling:
$("#confirmBox").dialog({
modal:true,
autoOpen:false,
buttons: {
"Save": function() { ... },
"Cancel": function() { ... }
}
});
var buttons = $('.ui-dialog-buttonpane').children('button');
buttons.removeClass('ui-button-text-only').addClass('ui-button-text-icon');
$(buttons[0]).append("<span class='ui-icon ui-icon-check'></span>");
$(buttons[1]).append("<span class='ui-icon ui-icon-close'></span>");
I'd be interested in seeing if there was a better way to do it, but this seems pretty efficient.
jQuery UI 1.8.22 では、次の構成を使用する必要がありました。
var buttons = $('.ui-dialog-buttonset').children('button');
buttons.removeClass().addClass('button');
これにより、すべての書式設定が削除され、必要に応じて代わりのスタイルが適用されます。
ほとんどの主要なブラウザーで動作します。
JQuery UI 1.8.11 バージョンがあり、これが私の作業コードです。要件に応じて、高さと幅をカスタマイズすることもできます。
$("#divMain").dialog({
modal:true,
autoOpen: false,
maxWidth: 500,
maxHeight: 300,
width: 500,
height: 300,
title: "Customize Dialog",
buttons: {
"SAVE": function () {
//Add your functionalities here
},
"Cancel": function () {
$(this).dialog("close");
}
},
close: function () {}
});
この関数は、ダイアログ ボックスのすべてのボタンにクラスを追加します。その後、通常どおりスタイルを設定 (または jQuery で選択) できます。
$('.ui-dialog-buttonpane :button').each(function() {
$(this).addClass($(this).text().replace(/\s/g,''));
});
jquery ui 1.8.5をチェックしてください。http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.5/jquery-ui.jsで入手でき 、 ダイアログuiを実装するための新しいボタンがあります。
UI ダイアログによって生成された HTML を見てみました。ボタン ペインを次のようにレンダリングします。
<div class="ui-dialog-buttonpane ui-widget-content ui-helper-clearfix">
<button type="button" class="ui-state-default ui-corner-all">Delete all items in recycle bin</button>
<button type="button" class="ui-state-default ui-corner-all different" style="border: 1px solid blue;">Cancel</button>
</div>
キャンセル ボタンにクラスを追加するのは簡単なはずです。
$('.ui-dialog-buttonpane :last-child').css('background-color', '#ccc');
これにより、[キャンセル] ボタンが少し灰色になります。このボタンのスタイルは自由に設定できます。
上記のコードは、キャンセル ボタンが最後のボタンであると想定しています。それを行うためのばかげた方法は
$('.ui-dialog-buttonpane :button')
.each(
function()
{
if($(this).text() == 'Cancel')
{
//Do your styling with 'this' object.
}
}
);