2 回答
TA贡献1812条经验 获得超5个赞
您应该选择 allp和atags inbody而不是 using *which 甚至会选择script标签本身。此外,删除</a>关闭任何锚标记的那个。要不修改锚标记的 HTML,您可以在替换之前检查当前元素是否没有子元素。
var regex = /(apples|oranges)/g;
$('body a, body p').each(function() {
var $this = $(this);
var text = $this.text();
if (text.match(regex) && $this.children().length===0) {
$this.html(
$this.html().replace(regex, '<span style="background: #fa7373;">$1</span>')
);
}
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<p>
I bought some apples.
</p>
<p>
<a href="oranges.html">I bought some oranges.</a>
</p>
<p>
I bought some pears.
</p>
TA贡献1843条经验 获得超7个赞
</a>从您的代码中删除。这</a>是关闭任何锚标记。
var regex = /(apples|oranges)/g;
$('*').each(function() {
var $this = $(this);
var text = $this.text();
if (regex.test(text)) {
$this.html(
$this.html().replace(regex, '<mark>$1</mark>')
);
}
});
添加回答
举报
