如果你运行这个简单的html,你会注意到删除主div的html不会删除被创建对话框的孩子()
<html>
<head>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.5/jquery-ui.min.js"></script>
<link type="text/css" rel="stylesheet" href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.5/themes/cupertino/jquery-ui.css"/>
</head>
<body class="ui-widget-content">
<script type="text/javascript">
$(function(){
$("#refill").click(function(){
var x = $("#main").html();
$('.foo').dialog();
$("#main").html("hello<div class='foo'>foo content</div>");
alert($('.foo').length);
});
});
</script>
<a href="#" id="refill">refill</a>
<div id="main">
hello<div class="foo">foo content</div>
</div>
</body>
</html>
是否可以在不知道他们的身份的情况下删除主要div的前孩子(我猜),那些div是什么?
答案 0 :(得分:1)
那是因为对话框不再在#main
div中了(点击后通过firebug检查html)。 jquery插件(尤其是jqueryui)的常见问题是它们在body标签中插入内容(在其关闭部分之前)。
您最好的选择可能是remove dialog到jqueryui API(destroy
方法)。或者,如果您不担心附带损害(其他可能的对话框也会被删除),您可以按类.ui-dialog
将其删除。
修改强>
好吧,除了用手去除对话外,什么也想不到。例如,这对我有用
$('.foo').dialog('destroy');
$('body > .foo').remove();