我知道管理JQuery.dialog的正确方法是初始化:
$("#dialog").dialog({ autoOpen: false });
然后使用以下内容打开和关闭它:
$("#dialog").dialog("open");
$("#dialog").dialog("close");
但是在某些情况下,这种模式并不完全适用。
例如,我使用对话框来创建新数据和编辑现有数据。在第一种情况下,我有取消和创建按钮,但在第二种情况下,我还有删除按钮。
我已经看到jquery.dialog中有一个destroy函数。问题是:在这些情况下,我应该销毁对话而不是关闭它并创建一个新对话框吗?还有更好的选择吗?
答案 0 :(得分:2)
您可以在打开对话框之前将不同的按钮设置为选项
e.g。
var buttons = {
"act_add": {
"Insert": function() { ... },
"Cancel": function() { ... }
},
"act_edit": {
"Save": function() { ... },
"Delete": function() { ... }
}
};
$('.dialogOpenLink').click(function(){
var $dlg = $('#dialog'),
actType;
//get an action name from data attribute of the clicked element
actType = $(this).data('action'); //or get the action in way that best suits you
$dlg.dialog( "option", "buttons", buttons[actType]);
$dlg.dialog('open');
});
答案 1 :(得分:2)
jQuery UI对话框允许您在初始化后操作大多数属性。初始化对话框后,可以更改按钮;例如单击插入或更新按钮时。
// imported from http://jsfiddle.net/salman/VYAJw/9/
$(function() {
$("#dialog1").dialog({
autoOpen: false,
modal: true
});
$("#button-insert").click(function() {
$("#dialog1").dialog("option", "title", 'Insert Record');
$("#dialog1").dialog("option", "buttons", [{
text: "Insert",
click: function() {
alert("Record inserted");
$(this).dialog("close");
}
}, {
text: "Cancel",
click: function() {
$(this).dialog("close");
}
}]);
$("#dialog1").dialog("open");
});
$("#button-update").click(function() {
$("#dialog1").dialog("option", "title", 'Update Record');
$("#dialog1").dialog("option", "buttons", [{
text: "Update",
click: function() {
alert("Record updated");
$(this).dialog("close");
}
}, {
text: "Delete",
click: function() {
alert("Record deleted");
$(this).dialog("close");
}
}, {
text: "Cancel",
click: function() {
$(this).dialog("close");
}
}]);
$("#dialog1").dialog("open");
});
});
@import url("https://ajax.googleapis.com/ajax/libs/jqueryui/1.11.4/themes/blitzer/jquery-ui.min.css");
body {
font: medium sans-serif;
}
#dialog1 label,
#dialog1 input {
display: block;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.11.4/jquery-ui.min.js"></script>
<div id="dialog1">
<p>Fill out this form.</p>
<form>
<fieldset>
<label for="name">Name</label>
<input type="text" name="name" id="name" />
<label for="email">Email</label>
<input type="text" name="email" id="email" />
<label for="password">Password</label>
<input type="password" name="password" id="password" />
</fieldset>
</form>
</div>
<input type="button" id="button-insert" value="Insert" />
<input type="button" id="button-update" value="Update" />
另一种方法是直接在表单内添加按钮,.hide()
取决于您是否显示插入或更新对话框。
答案 2 :(得分:0)
要安全删除对话框,您只需要设置关闭选项,如下所示:
close: function() {
return $(this).remove();
}