2009-08-10 21 views
0

我已經寫了它操作的某些元素有以下選擇內容的Greasemonkey的腳本:在Greasemonkey/javascript中,如何處理添加到頁面的新元素?

$("span.relativetime").each(function() { $(this).html("TEST"); }); 

但是,有時匹配的元素添加到通過AJAX頁面,我不知道如何處理那些新元素。我已經試過這一點,但它不工作:

$("span.relativetime").live(function() { $(this).html("TEST"); }); 

documentation for jQuery live()說,它希望的事件(如「點擊」)。但我沒有任何事件,我只想知道什麼時候匹配我的選擇器已經創建,然後我想修改它。

背景:我遇到了這個問題,Greasemonkey的腳本顯示StackOverflow上的相對時間戳是絕對的本地時間戳,這you can find on meta-SO。問題是當你點擊「顯示所有評論」時,新的評論是由AJAX添加的,我不知道如何查找和替換這些腳本中的時間戳。

回答

0

隨着StackOverflow的設置,我發現它討厭處理的東西后的意見。我所做的是在添加/刪除註釋按鈕上添加一個綁定,該按鈕使用setTimeout等待創建元素,然後對其進行修改。

+0

不管您在哪個網站上,是否沒有通用的方式來執行此操作?這似乎是相當頻繁需要的東西。 – Kip 2009-08-10 17:17:47

+0

StackOverflow'創建'的評論。我沒有看到許多網站這樣做。他們大多隻是「展示」他們。相反,通過AJAX抓住他們 – 2009-08-10 17:19:28

0

有一兩件事你可以嘗試(雖然我不知道它是否會工作)是緩存選擇在一些全局變量,像這樣:

var $relativetime = $("span.relativetime"); 

那麼你將有你的。每個功能:

$relativetime.each(function() { $(this).html("TEST"); }); 

後您的新元素被添加到DOM,你可以重新選擇追加到緩存的對象:

$relativetime.append("<my html>"); //or 
$("<my html>").appendto($relativetime); 

(P.s.) .html()用於設置html。要設置文本,請使用.text()

相關問題