2012-12-22 27 views
0

我有一個空div元件:觸發事件,當一個元件存在

<div class="message"></div> 

在網頁的某些點,一個p標籤被動態地添加到div:

<div class="message"> 
    <p>Some Message</p> 
</div> 

p可以得到刪除,然後再次添加等等。

如果div.message孩子有p孩子並執行一些代碼,我應該使用什麼事件來收聽?

我發現this的問題,而是牽涉到外部插件。

難道沒有簡單的方法來完成這個嗎?

+3

這是怎麼元素添加和刪除? – Blender

+0

通過jquery.validation插件。我可以從那裏插入代碼,但我正在尋找另一種解決方案,保持代碼不變 – jviotti

+0

如果插件沒有創建元素之前運行的某些可配置回調,我會感到驚訝。這裏有一個例子:http://stackoverflow.com/questions/2762458/customising-event-delegates-in-the-jquery-validation-plug-in。 '突出'看起來很有希望。 – Blender

回答

4

根據您的實施方式以及您需要多快來識別更改,您可能可以通過使用setInterval來定期監視某個元素的內容。

var checkContents = setInterval(function(){ 
    if ($("div.message p").length > 0){ // Check if element has been found 
    // There is a <p> element in here!! 
    console.log($("div.message p").length()); 
    } 
},1000); 

先前片段將檢查內div.message元件每秒(1000毫秒)<p>元件,並且如果存在的話將它們的數量記錄到控制檯。


根據您的瀏覽器支持的要求,你可以選擇使用突變事件 -

Mutation events provide a mechanism for a web page or an extension to get notified about changes made to the DOM...

var element = document.querySelectorAll('div.message') 
element.addEventListener("DOMNodeInserted", function (ev) { 
    // ... 
}, false); 
+1

突變事件現在被突變觀察者取代 –