У меня где-то на веб-сайте есть определенный текст, скажем, «леденцы», и я хочу заменить все вхождения этой строки на «маршмеллоу». Проблема в том, что я не знаю, где именно находится текст. Я знаю, что могу сделать что-то вроде:
$(body).html($(body).html().replace('lollypops', 'marshmellows'));
Это, вероятно, сработает, но мне нужно переписать как можно меньше HTML, поэтому я думаю примерно так:
- искать строку
- найти ближайший родительский элемент
- перезаписать только ближайший родительский элемент
- замените это даже в атрибутах, но не во всех, например замените его
class
, но не вsrc
Например, у меня была бы такая структура
<body>
<div>
<div>
<p>
<h1>
<a>lollypops</a>
</h1>
</p>
<span>lollypops</span>
</div>
</div>
<p>
<span class="lollypops">Hello, World!</span>
<img src="/lollypops.jpg" alt="Cool image" />
</p>
<body>
В этом примере все вхождения "lollypops" будут заменены, только <img src="...
останется прежним, и единственными элементами, которыми можно будет фактически управлять, будут <a>
и оба элемента <span>
s.
Кто-нибудь знает, как это сделать?