我已经尝试了所有可能的想法来摆脱这个问题,我知道它是一个已知的问题,但是我如何克服它,基本上jQuery ui在调用两次时没有显示对话框,使用
self.$popup.dialog("open");
我正在使用jQuery Ui 1.8.9和jQuery 1.4.4
这是我的代码:
self.$popup = $("#import_box_dialog").dialog({
autoOpen: false,
title: 'Import Albums',
modal: true,
position: "top",
height: 600,
maxWidth: 800 ,
minWidth: 400 ,
show:"slide",
width :700,
"buttons": [
{
text: "Import",
click: self.doImport
}
]
});
我看到的另一个奇怪的事情是对话框内容嵌入在外部DOM元素中。
我的对话框DOM结构如下:import_box->
<div class="media_import_box" >
<div id="import_box_dialog">
<ul id="media_content"></ul>
</div>
</div>
当第二次显示时,DOM树看起来像这样
“import_box_dialog”实际上移出“import_box”div并且我不知道它是如何发生的,但是display属性是none,当我再次调用对话框时它不会改变。
答案 0 :(得分:2)
$(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');
// prevent the default action, e.g., following a link
return false;
});
});
答案 1 :(得分:1)
管理解决问题,问题是程序在调用$("import_box_dialog").dialog()
时反复创建不必要的div。并且由于$运算符返回u所有div匹配给定条件,即在这种情况下的ID,因此内容没有变得可见,我认为这让它感到困惑,有两种方法可以解决它:
$("import_box_dialog").child().remove()
手动删除Div这将删除对话框div中的所有其他Div 我认为jquery应用了很多类样式,因为在选择正确的div时存在歧义,我想使用静态变量来解决它。