从div开始对话后,jqueryUI对话框在哪里进行

时间:2010-10-05 06:50:59

标签: jquery jquery-ui

如果你运行这个简单的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是什么?

1 个答案:

答案 0 :(得分:1)

那是因为对话框不再在#main div中了(点击后通过firebug检查html)。 jquery插件(尤其是jqueryui)的常见问题是它们在body标签中插入内容(在其关闭部分之前)。

您最好的选择可能是remove dialog到jqueryui API(destroy方法)。或者,如果您不担心附带损害(其他可能的对话框也会被删除),您可以按类.ui-dialog将其删除。

修改
好吧,除了用手去除对话外,什么也想不到。例如,这对我有用

$('.foo').dialog('destroy');
$('body > .foo').remove();