2010-07-23 35 views
2

有什麼辦法在創建某種類型的對象時觸發事件?在創建對象時觸發javascript事件

我有一個<div>元素editableContent="true",當用戶按下<div>中的輸入時,會創建一個新的<div>,它只佔用該行。每當在我的原始<div>對象內創建一個<div>對象時,是否可能發生事件觸發?

我知道有一種方法可以聽按鍵,按下'enter'鍵,做一堆邏輯來弄清楚該做什麼,但這看起來好像不那麼優雅 - 所以它會是如果有另一種方式,那就太棒了

謝謝!

回答

3

有一堆DOM Events,其中一些將是supported by firefox例如。但我不認爲IE只支持其中之一。 Here是一個完整的列表。 首先,您可以在每次創建新div時觸發一個自定義事件,或者您有一個settimeout,該settimeout會每隔一秒檢查一次div div的子節點數是否已更改。

+0

DOMNodeInserted事件應該是我所需要的。幸運的是,除了IE之外,所有人都支持它。 – Andrew 2010-07-23 20:02:18

1

你有一個函數,當你按回車時創建一個div。你爲什麼不在它的最後添加一個函數調用。

function createDiv(){ 
    //create div 
    //append div 
    divCreated(); 
} 
+0

我沒有創建div的函數,當你按回車時,div是自動創建的(這只是具有contentEditable = true的對象的標準行爲;) – Andrew 2010-07-23 19:57:31

1

新元素創建沒有默認回調。我記住的第一件事 - 您可以爲mouseUp事件添加事件偵聽器,並檢查內容增量(更改的部分) - 如果它看起來像使用regexp的元素標記。

0

每個想要對DOM中的變化做出反應的人都應該考慮到MutationObserver。它是目前在全部最新(甚至不是全部現代但最新!)瀏覽器中實現的標準DOM4功能。