Лучший способ заменить/удалить текст из строки внутри тега li
Я работаю над списком карт в ExpressionEngine (поэтому у меня нет слишком большой гибкости в отношении того, как вещи отображаются), и мне нужно удалить слово "родитель" из строки, если оно существует.
Ниже приведен пример вывода HTML:
<li class="sitemap-item">
<a href="">About Us Parent</a>
<ul>
<li class="sitemap-item">
<a href="">About Us</a>
<ul>
<li class="sitemap-item">
<a href="#" onclick="location.href='http://website.dev/about-us/meet-the-directors'; return false;">Meet the Directors</a>
</li>
<li class="sitemap-item">
<a href="">Partners</a>
</li>
<li class="sitemap-item">
<a href="">Accreditation & Awards</a>
</li>
<li class="sitemap-item">
<a href="">Testimonials</a>
</li>
<li class="sitemap-item">
<a href="#" onclick="location.href='http://website.dev/careers'; return false;">Careers</a>
</li>
</ul>
</li>
</ul>
</li>
Ответы
Ответ 1
jQuery не имеет метода replace
, это собственный метод для строк, то есть вы должны сначала получить текст в виде строки, например, с помощью text()
, а затем вернуть измененную строку обратно
$(document).ready(function(){
$('li > a:contains("Parent")').text(function(_, txt) {
return txt.replace('Parent','');
});
});
Ответ 2
Вы можете использовать метод replace()
с регулярным выражением, чтобы убедиться, что вы заменили все экземпляры слова. replace()
со строками заменяет только первое появление.
$(document).ready(function(){
var elements = $('li');
elements.html(elements.html().replace(/Parent/gi, ''));
});