从DOM中删除唯一ID

时间:2011-06-24 17:59:16

标签: javascript prototypejs

我正在开发一个实现了非常时髦的模式框的网站,现在它已经超出了实现新内容的范围,因此我正在努力尝试使用当前存在的内容。它的工作方式是每次创建一个新的模态窗口时,都会为它分配一个唯一的ID ..例如

<div id="window_1308937649703" class="dialog">

要关闭窗口,关闭按钮有一个onclick,如:

onclick='Windows.close("window_1308937649703", event)'

我试图从另一个点击事件中摧毁窗口,但我不确定实现此目的的最佳方法是什么。我想我可以使用对话框类来提取相关的唯一#window_ id。是否还有一些javascript我可以使用getElementsByClassName('dialog')并从DOM中完全删除它?如果有任何帮助,我也可以使用Prototype库。我无法理解实际的模态脚本,所以我希望有一些解决方案。

3 个答案:

答案 0 :(得分:0)

要从dom使用中完全删除对话框:

function removeNodeByID ( nodeId){
  var node = document.getElementById( nodeId );
  node.parentElement.removeChild(node);
};

onclick="removeNodeById('window_1308937649703')"

这样你只需要你提到的可以在问题中找到的对话框的ID。

答案 1 :(得分:0)

你可以在原始JavaScript中使用getElementsByClassName()并不多了(除了滚动你自己的),尽管Prototype对此有一些好的functionality

另一种可能的方法:关闭按钮是否具有通用ID?如果是这样,如果你能够添加插件(抱歉,我从未使用过Prototype),你可以查看这个thread以了解如何触发关闭按钮上的click事件。我选择了它。

答案 2 :(得分:0)

如果你有原型,你可以简单地使用:

$$('.dialog').first().remove();

另外,如果您使用的是原型,则应该避免使用onClick,而是使用事件观察器:

<button id="dialogremover">Remove</button>
<script type="text/javascript">
$('dialogremover').observe('click', function(ev) {
  ev.stop();
  $$('.dialog').first().remove();
});
</script>

这有两个好处:

  • 眼睛更轻松!
  • 可以将JS放在外部脚本中来清理HTML。