2010-02-25 77 views
2

我正在嘗試使用jQuery來輪詢在jQuery對象之外創建的動態DOM節點(使用Google Maps API方法)。例如,我可以通過將delegate()綁定到單擊事件來輕鬆完成此操作。但是,我需要輪詢DOM,而無需任何其他用戶操作(用戶不必點擊),作爲運行onload的函數的一部分。有誰知道一種方法來實現這一點?有沒有辦法在沒有用戶事件的情況下觸發jQuery的live()或delegate()?

編輯:我正在使用Maps API編寫在加載時添加一堆標記。我可以在沒有任何問題的情況下執行此操作,但我需要通過Maps API使用jQuery編寫的HTML循環並追加子節點。 delegate()和live()可以這樣做,但我知道如何觸發delegate()或live()的唯一方法是將其綁定到用戶事件。我試圖在我的Maps API函數的每次迭代中引發類似jQuery委託的事情,而無需用戶執行任何操作。

+1

你是什麼意思,「輪詢DOM」?爲什麼調查它? – Pointy 2010-02-25 15:00:38

+0

針對通過Google地圖API方法添加的標記進行輪詢。 – 2010-02-25 15:13:32

回答

0

做呼叫一次:

setTimeout("doGoogleMapApiCall()", 5000); 

..或多次:

setInterval("doGoogleMapApiCall()", 5000); 

編輯:我知道你在尋找的是一個自定義事件?看看這裏:http://www.reynoldsftw.com/2009/04/custom-events-in-jquery-open-doors-to-complex-behaviors/

+2

這是一種不好的方法來做「setTimeout」或「setInterval」 - 你已經定義了函數,所以沒有理由將它作爲字符串傳入。 'setTimeout(doGoogleMapApiCall,5000);'更好。 – Pointy 2010-02-25 15:10:21

+0

我建議將setInterval的返回值分配給一個變量(例如,myInterval)。然後,如果您需要停止輪詢,稍後在頁面中,可以調用clearInterval(myInterval)來停止輪詢。 – Lobstrosity 2010-02-25 15:15:07

+0

我的地圖API方法已在加載時觸發。我的問題是我想通過使用jQuery的Map API編寫的HTML循環,然後附加子文本節點。 – 2010-02-25 15:18:03

3

查看LiveQuery plugin。下面是它的使用的一個簡單的例子:

$('table tr:even').livequery(function(){ 
    $(this).removeClass("odd"); 
    $(this).addClass("even"); 
}); 

這個片段會自動應用「偶數」級和刪除任何「奇」類,它可能會在一個錶行動態作爲新行添加到表。

相關問題