0

我编写了一个 Greasemonkey 脚本,它使用以下选择器操作某些元素的内容:

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

但是,有时通过 AJAX 将匹配的元素添加到页面中,我不知道如何处理这些新元素。我已经尝试过了,但它不起作用:

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

jQuery live()的文档说它想要一个事件(比如“点击”)。但是我没有任何事件,我只想知道何时创建了与我的选择器匹配的东西,然后我想对其进行修改。

背景:我在使用 Greasemonkey 脚本将 StackOverflow 的相对时间戳显示为绝对本地时间戳时遇到了这个问题,您可以在 meta-SO 上找到它。问题是当您单击“显示所有评论”时,新评论是由 AJAX 添加的,我不知道如何查找和替换这些脚本中的时间戳。

4

2 回答 2

0

使用 StackOverflow 的设置,我发现在评论后处理东西很烦人。我所做的是在“添加/删除评论”按钮上进行绑定,该按钮使用 setTimeout 等待创建元素,然后修改它们。

于 2009-08-10T17:15:20.270 回答
0

您可以尝试的一件事(尽管我不确定它是否会起作用)是将您的选择缓存在一些全局变量中,如下所示:

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

然后你会有你的 .each 功能:

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

将新元素添加到 DOM 后,您可以重新选择附加到缓存对象:

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

(Ps.html()用于设置 html。要设置文本,请使用.text()

于 2009-08-10T17:32:37.520 回答