fly*_*ire 24 html javascript css jquery jquery-ui
我有一个按钮,单击时会打开一个对话框.该对话框显示隐藏的div
单击X图标关闭对话框后,无法再次打开对话框.
Ale*_*ton 39
Scott Gonzalez(jQuery UI团队)在最近的博客文章中讨论了很多人在开始使用jQuery UI时遇到此问题的原因:http://blog.nemikor.com/2009/04/08/basic-usage -of最jQuery的UI的对话框/
摘录:
用户经常遇到对话框的问题是,每次用户执行某些操作(通常单击链接或按钮)时,他们都会尝试实例化新对话框.这是一个可以理解的错误,因为乍一看似乎在元素上调用.dialog()是导致对话框打开的原因.实际上,正在发生的是创建一个新的对话框实例,然后在实例化后立即打开该实例.对话框打开的原因是对话框具有autoOpen选项,默认为true.因此,当用户对元素两次调用.dialog()时,将忽略第二个调用,因为该对话框已在该元素上实例化.
解:
解决此问题的简单方法是将autoOpen设置为false的对话框实例化,然后在事件处理程序中调用.dialog('open').
$(document).ready(function() {
var $dialog = $('<div></div>')
.html('This dialog will show every time!')
.dialog({
autoOpen: false,
title: 'Basic Dialog'
});
$('#opener').click(function() {
$dialog.dialog('open');
});
});
Run Code Online (Sandbox Code Playgroud)
你在使用ui对话框吗?您应该发布一些代码,以便我们可以看到导致问题的原因.但这里有一个猜测(因为我最近犯了同样的错误).使用ui对话框时,您只需初始化对话框一次.
$(document).ready(function() {
$('#dialog').dialog({
autoOpen:false,
modal:'true',
width:450,
height:550
});
$('#MyButton').click(openDialog);
});
Run Code Online (Sandbox Code Playgroud)
此代码初始化对话框但不显示对话框.单击MyButton时,openDialog函数将打开对话框.
var openDialog = function(){
$('#dialog').load('loadurl.php');//load with AJAX
//optionally change options each time it is clicked
$('#dialog').dialog('option', 'buttons',{
"Cancel":function(){
$('#dialog').dialog('close');
}
});
//actually open the dialog
$('#dialog').dialog('open');
};
Run Code Online (Sandbox Code Playgroud)