作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我遇到了一种情况,需要在创建新对话框之前手动删除旧对话框。在另一个线程中,建议了以下方法:
$('.ui-dialog').empty().remove();
我认为这可行,但我确实有其他对话框,我不想从 DOM 中删除,并且我认为此方法可以删除所有这些对话框。使用 Firebug 检查页面表明,一旦 JQuery 根据您提供的 html 创建了一个对话框,它就会为其提供标准的包装器 div,所有这些都具有相同的类。这些是:
ui-dialog ui-widget ui-widget-content ui-corner-all ui-draggable
所以它们非常通用,很难找到需要去除的外部包装类的独特特征。我正在尝试找到一种方法来仅删除我想要删除的对话框,而保留其他对话框。有什么想法吗?
最佳答案
我知道这个话题已经很老了,但我最近遇到了同样的情况。对于我的情况,我动态创建对话框并使用 .load()。 jQuery 确实对 DOM 做了一些奇怪的事情,给我带来了很大的麻烦。关闭(有时删除对话框)后,DOM 中会留下不必要的“垃圾”。我无法删除它所在的“div”,因为我实际上使用 div 的内容来维护一些状态信息。我想出了以下代码并以有限的方式对其进行了测试以验证其是否有效。它似乎确实消除了 jQuery 留下的所有不必要的包袱。我什至测试了它,打开了几个窗口,并在此过程中监视 DOM 的状态,以确保每个对话框的状态得到正确维护。我将在此处发布整个代码(加载的对话框除外,它只不过是一个包含一些代码的 div。
<html>
<head>
<link href="css/redmond/jquery-ui-1.8.1.custom.css" type="text/css" rel="stylesheet" media="screen" />
<script src="js/jquery-1.4.2.min.js" type="text/javascript"></script>
<script src="js/jquery-ui-1.8.1.custom.min.js" type="text/javascript"></script>
<script type="text/javascript">
$(document).ready (function () {
$("#openDialog").click (function () {
$("<div></div>")
.load ("loadDialogTest.php")
.appendTo ($("#containingDiv"))
.dialog ({
autoOpen: 'false',
title: 'Test This!',
close: function () {
$(this).dialog ('destroy').remove ();
}
}).dialog ('open');
});
});
</script>
</head>
<body>
<a href="#" id="openDialog">Open it</a>
<div id="containingDiv">
</div>
</body>
</html>
关于jquery - 如何从 DOM 中删除 JQuery 对话框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2096946/
我是一名优秀的程序员,十分优秀!