我正在尝试解析DOM并将部分文本替换为令牌,例如检测电子邮件,然后将其替换为{{EMAIL}}字符串,而不更改HTML < /强> 给定以下HTML(例如 ,可以是不同的 ):
<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;">bla@bla.com </span>
</div>
如何只更换测试部分,使其成为:
<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}} </span>
</div>
答案 0 :(得分:1)
您可以在需要更改的DOM元素中添加 id =“myspan”,并在jquery的帮助下更改 innerHTML ,如下所示:
<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}} </span>
</div>
$('#myspan').innerHTML = "{{EMAIL}} ";
答案 1 :(得分:1)
您需要选择具有title
属性的元素,并使用.filter()
过滤所选元素,其中select元素在title
属性中具有电子邮件地址。然后用新文本替换电子邮件地址。
$("div > [title]").filter(function(){
return $(this).attr("title").match(/^[\w]+@[\w.]+\.[\w]+$/g);
}).text(function(i, text){
return text.replace(/^[\w]+@[\w.]+\.[\w]+/g, "{{EMAIL}}");
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<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;">bla@bla.com </span>
</div>
&#13;
答案 2 :(得分:1)
如果您需要查找和替换文本,可以随时使用JQuery的:contains
选择器。
就像这里的例子一样:
Find text string using jQuery?
您可以使用以获取所需的所有字符串
如果您没有搜索特定代码,请$('span:contains("bla@bla.com")
甚至*:contains
。
获得所有实例后,您可以按照Mohammad
的建议进行文本替换