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>')
);
}
});
添加回答
舉報