2010-11-17 41 views
0

可能重複:
Detect element content changes with jQuery火在運行一個jQuery功能

我有一個包裝DIV說

<div id="placesNewCheckinContainer" style="display:none"> 
</div> 

如果在運行時的任何DOM元素插入/在那個地方刪除了NewCheckinContainer,我想要一個jQuery函數。 幫助我如何實現這一點。 謝謝

+0

你是什麼意思的運行時?當頁面正在加載或頁面加載? – wajiw 2010-11-17 14:20:49

+0

運行時間表示已加載頁面。 – Soarabh 2010-11-17 14:41:09

回答

3

有一個完全跨瀏覽器的方式這樣做的沒有便捷的方式。 Firefox,Chrome和Safari全都支持DOMSubtreeModified事件,該事件將在特定元素內部對DOM進行任何修改時觸發。前面提到的瀏覽器和Opera支持DOMNodeInsertedDOMNodeRemoved,這也將完成這項工作。

$("#placesNewCheckinContainer").bind("DOMNodeInserted DOMNodeRemoved", function() { 
    alert("Something happened inside #placesNewCheckinContainer"); 
}); 

不幸的是,IE不支持任何這些事件。它確實有它自己的事件,可以部分做的工作,但 - onpropertychange。這可以通知你什麼時候innerHTML的值發生變化,但僅限於修改直接的孩子,而不是所有的後代。

0

jQuery有一個更改事件,但它僅用於用戶輸入字段(瀏覽器觸發這些事件)。您列出的DIV的操作必須來自代碼。那麼爲什麼不找到操縱發生的地方,然後將所需的邏輯添加到那裏?

我發現了一個偉大的文章而回"Custom events in jQuery open doors to complex behaviors"

這包括一些很酷的東西,你可以用自定義綁定做。但你仍然需要觸發一個觸發器,這意味着操縱改變div內容的代碼來觸發觸發器,或者設置一個定時間隔來監視div的內容,以便觸發觸發器(我不會推薦這種觸發器 - 因爲它不是即時的並導致不必要的開銷)。