Javascript Jquery-在不影响HTML的情况下用标记替换文本

Javascript Jquery-在不影响HTML的情况下用标记替换文本,javascript,jquery,html,Javascript,Jquery,Html,我试图解析DOM并用标记替换部分文本,例如,检测电子邮件,然后用{{email}}字符串替换它,而不更改HTML 给定以下HTML(,例如,可以不同): 这是我的 电子邮件bla@bla.com 如何仅更换测试部分,使其符合以下要求: <div dir="ltr" style="direction: ltr; text-align: left;"> this is <span style="font-style:italic;">my</span>

我试图解析DOM并用标记替换部分文本,例如,检测电子邮件,然后用{{email}}字符串替换它,而不更改HTML 给定以下HTML(,例如,可以不同):


这是我的
电子邮件bla@bla.com 
如何仅更换测试部分,使其符合以下要求:

<div dir="ltr" style="direction: ltr; text-align: left;">
   this is <span style="font-style:italic;">my</span>
    email <span title="bla@bla.com" style="font-weight:bold;">{{EMAIL}}&nbsp;</span>
</div>

这是我的
电子邮件{{email}

您可以向需要更改的DOM元素添加一个id=“myspan”,并在jquery的帮助下更改innerHTML,如下所示:

HTML:
您需要选择元素具有
title
属性,并使用该选择元素在
title
属性中具有电子邮件地址来筛选所选元素。然后用新文本替换电子邮件地址

$(“div>[title]”)。过滤器(函数(){
返回$(this.attr(“title”).match(/^[\w]+@[\w.]+\.[\w]+$/g);
}).文本(功能(i,文本){
返回文本。替换(/^[\w]+@[\w.]+\.[\w]+/g,“{EMAIL}”);
});

这是我的
电子邮件bla@bla.com 

如果需要查找和替换文本,可以始终使用JQuery的
:contains
选择器。 就像这里的例子:

您可以使用
$('span:contains('bla@bla.com“”
或甚至
*:如果未搜索特定标记,则包含


在您获得所有实例后,您可以按照Mohammad的建议进行文本替换。您的意思是使用把手?请查看此处:如何转换它,该模板应该做什么,以及它来自何处?除了显示您的工作和您尝试过的内容外,请详细说明您正试图替换的内容(或者什么内容)“可以不同”的意思)-除了最后一个
之外,应该被代币替换的内容是否总是完整的?你为什么要在其中放一个
?可能重复感谢回复,请查看我的编辑谢谢回复,但是HTML不是硬编码的,不能对标记有任何概念,或者有di我给你一个+1的回复,我给你一个+1的回复,标题只是一个例子,我无法控制输入HTML@ShlomiSchwartz例如,您说过如果标题属性中存在电子邮件字符串,它将被替换。该代码适用于任何标记。如果您需要查找电子邮件地址的所有实例,则可以使用Regexs写为文本(尽管您应该用数据属性注释这些标记,以表明它们包含需要更改的文本)。或者,我相信您可以将整个DOM转换为字符串,在整个字符串上运行正则表达式,并使用匹配组返回其内容中包含电子邮件地址的所有节点。请参阅“有关匹配组和regex的更多信息,请访问“备忘单”链接。regex可能是一种解决方案,但如果整个Dom是一个字符串,则电子邮件将在属性中替换为,而我只想替换tag@ShlomiSchwartz
.text()
仅返回元素的文本和
text.replace()
仅替换文本形式的电子邮件。虽然此链接可能会回答问题,但最好在此处包含答案的基本部分,并提供链接供参考。如果链接页面发生更改,则仅链接的答案可能无效。-我没有想到的明显问题。感谢您指出!
<div dir="ltr" style="direction: ltr; text-align: left;">
   this is <span style="font-style:italic;">my</span>
    email <span title="bla@bla.com" style="font-weight:bold;">{{EMAIL}}&nbsp;</span>
</div>
<div dir="ltr" style="direction: ltr; text-align: left;">
   this is <span style="font-style:italic;">my</span>
    email <span id="myspan" style="font-weight:bold;">{{EMAIL}}&nbsp;</span>
</div>
$('#myspan').innerHTML = "{{EMAIL}}&nbsp;";