Лучший способ заменить/удалить текст из строки внутри тега 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 &amp; 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, ''));
});