javascript
  • prototypejs
  • 2011-06-24 42 views 2 likes 
    2

    我正在一个网站上实现了一个非常时髦的模式框,现在它已经超出了实现新功能的范围,因此我正在尽我所能地尝试使用当前存在的内容。它的工作方式是每次创建一个新的模式窗口被分配一个唯一的ID。例如时间删除DOM中的唯一ID

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

    要关闭的关闭按钮具有一个onclick像窗口:

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

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

    +0

    关闭按钮与div的关系在哪里?是否有可能使用'this',然后用parentNode()向后走,直到找到它? – Drazisil

    回答

    0

    要完全以从DOM使用删除对话框:

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

    onclick="removeNodeById('window_1308937649703')" 
    

    这种方式,你只需要你提到的,你可以在这个问题retreive对话框的ID。

    +0

    我不明白..问题的一部分是我不知道如何得到独特的ID#这是生成的,所以我怎么能这样onclick? – Zac

    +0

    我一定误解了,我以为你说你可以得到id –

    0

    在原始JavaScript中除了滚动你自己的东西外,没有太多可以做的:getElementsByClassName(),尽管Prototype有一些很好的functionality

    另一种可能的方法:关闭按钮是否有一个通用的ID?如果是这样,并且您可以添加插件(对不起,我从未使用过Prototype),那么您可以查看此thread以了解如何在选择该关闭按钮后触发点击事件。

    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。
    相关问题