javascript
  • prototypejs
  • 2011-06-24 44 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。
    相關問題