Переберите <li> и замените текст на jquery

У меня есть следующая структура HTML:

<div class="mydiv">
  <ul>
    <li>Text 1</li>
    <li>Text 2</li>
  </ul>
  <ul>
    <li>Text 3</li>
    <li>Text 4</li>
  </ul>
  <ul>
    <li>Text 5</li>
  </ul>
</div>

Я хочу найти строку, содержащую "4" и заменить ее на "четыре". Другие строки из других li элементы этого div тогда мне уже не интересно. Как я могу сделать это, если я знаю только в каком div Я должен искать, но не какой li элемент?

2 ответа

Решение

Вы можете использовать : содержит селектор

$( "div li:contains('4')" ).text(function(_, val) { 
    return val.replace(/4/, "four")
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="mydiv">
  <ul>
    <li>Text 1</li>
    <li>Text 2</li>
  </ul>
  <ul>
    <li>Text 3</li>
    <li>Text 4</li>
  </ul>
  <ul>
    <li>Text 5</li>
  </ul>
</div>

Просто используйте replace в HTML родительского div и затем сбросьте HTML, используя замененное содержимое:

$(".mydiv" ).html($(".mydiv" ).html().replace(/4/, "four"))
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="mydiv">
  <ul>
    <li>Text 1</li>
    <li>Text 2</li>
  </ul>
  <ul>
    <li>Text 3</li>
    <li>Text 4</li>
  </ul>
  <ul>
    <li>Text 5</li>
  </ul>
</div>

Другие вопросы по тегам