我编写了一个Greasemonkey脚本,它使用以下选择器操作某些元素的内容:
$("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 :(得分:0)
使用StackOverflow的设置我觉得在评论之后处理内容很烦人。我所做的是在添加/删除注释按钮上放置一个绑定,该按钮使用setTimeout等待创建元素,然后修改它们。
答案 1 :(得分:0)
您可以尝试的一件事(虽然我不确定它是否可行)是将您的选择缓存在某个全局变量中,如下所示:
var $relativetime = $("span.relativetime");
然后你将拥有你的.each功能:
$relativetime.each(function() { $(this).html("TEST"); });
将新元素添加到DOM后,您可以重新选择附加到缓存对象:
$relativetime.append("<my html>"); //or
$("<my html>").appendto($relativetime);
(P。.html()
用于设置html。要设置文字,请使用.text()