Вы - часть пути, но вы заключаете все содержимое элемента в теги <mark>
.После того, как вы определили элемент, вам необходимо:
- Извлечь содержимое,
- Определить имя цели и обернуть его в теги, и
- Замените существующее содержимое обновленной версией
. Для этого вам потребуется выполнить некоторые манипуляции со строками.,,что-то вроде следующего кода:
function highlightName(sName) {
var targetSpan = $("span:contains('" + sName + "')");
var spanText = targetSpan.text()
targetSpan.html(spanText.replace(sName, "<mark>" + sName + "</mark>"));
}
highlightName('John Smith');
highlightName('Jack Jones');
highlightName('Julie Jones');
mark {background-color: yellow;}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<p><span>My name is John Smith and I am new here</span>.</p>
<p><span>My name is Jane Smith and I am a veteran user</span>.</p>
<p><span>My name is John Doe and I am the owner</span>.</p>
<p><span>My name is Jack Jones and I am new here</span>.</p>
<p><span>My name is Julie Jones and I am an amateur user</span>.</p>
ПРИМЕЧАНИЕ: Если в промежутке есть что-то кроме текстового содержимого, код должен быть обновлен для сохраненияHTML-код.В настоящее время метод text()
извлекает только текстовое содержимое <span>
, и, когда его заменяют методом "html()
, только вновь добавленные теги <mark>
останутся дочерними элементами HTML.