Jquery 事件侦听器在.html().replace()之后不工作

Jquery 事件侦听器在.html().replace()之后不工作,jquery,greasemonkey,jquery-events,tampermonkey,Jquery,Greasemonkey,Jquery Events,Tampermonkey,我正在编写一个tampermonkey/greasemonkey脚本,希望可以单击票证ID来搜索它 我已经在堆栈溢出中发现,我应该使用.on()或.live()来创建侦听器 我的问题是,我正在使用一个额外的脚本,我没有可能更改为原始源代码 我能做些什么来留住听众 在本例中,我使用这一行替换9位数字,它不是html属性的一部分: $(this).html($(this).html().replace(/\b([0-9]{9})\b(?!(?:(?!<\/?[ha].*?>).)*<

我正在编写一个tampermonkey/greasemonkey脚本,希望可以单击票证ID来搜索它

我已经在堆栈溢出中发现,我应该使用
.on()
.live()
来创建侦听器

我的问题是,我正在使用一个额外的脚本,我没有可能更改为原始源代码

我能做些什么来留住听众

在本例中,我使用这一行替换9位数字,它不是html属性的一部分:

$(this).html($(this).html().replace(/\b([0-9]{9})\b(?!(?:(?!<\/?[ha].*?>).)*<\/[ha].*?>)(?![^<>]*>)/,'<a href="example.cpm?search=$1" target="_blank">$1</a>'));

你能发布被替换的原始HTML代码吗?不要使用
.HTML(.HTML().replace
如果您想保留事件。只修改数字所在的文本。@scimonester:我在帖子中添加了一个示例。失败的原因是您正在销毁以前的元素,这些元素有附加的处理程序,并在它们的位置创建新元素。要做您想做的事情,您必须做更多的工作:基本上,您需要找到数字出现的文本节点(并决定是否要处理它们跨越节点的情况),然后拆分这些文本节点以插入链接,将数字移动到链接中。这不难,但也不是小事。这个答案可能会给你一个帮助:@KevinB:我已经有了相同的想法。问题是,我不知道如何遍历jQuery结果中的每个文本节点。有什么建议吗?
$('span.alert').click(function(){
    alert($(this).html());
});