我有一个按钮,当点击它时会打开一个对话框。
该对话框显示一个之前隐藏的div元素。
但是,当我通过点击“X”图标关闭对话框后,再次点击按钮无法重新打开对话框。
我有一个按钮,当点击它时会打开一个对话框。
该对话框显示一个之前隐藏的div元素。
但是,当我通过点击“X”图标关闭对话框后,再次点击按钮无法重新打开对话框。
Scott Gonzalez(jQuery UI团队成员)在最近的博客文章中谈到了很多人在开始使用jQuery UI时遇到的问题的原因: http://blog.nemikor.com/2009/04/08/basic-usage-of-the-jquery-ui-dialog/
摘录:
用户经常遇到的问题是,他们尝试在每次用户执行某些操作(通常是单击链接或按钮)时实例化一个新的对话框。这是一个可以理解的错误,因为乍一看似乎在元素上调用.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');
});
});
您正在使用ui对话框吗?您应该发布一些代码,以便我们可以看到是什么导致了您的问题。但这里有一个猜测(因为我最近也犯了同样的错误)。使用ui对话框时,您只需初始化对话框一次。
$(document).ready(function() {
$('#dialog').dialog({
autoOpen:false,
modal:'true',
width:450,
height:550
});
$('#MyButton').click(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');
};
<asp:LinkButton ID="btn1" runat="server" OnClientClick="return false;">Click me</asp:LinkButton>