如何按文字查找和替换列表项?

时间:2018-05-30 13:54:07

标签: javascript jquery

以下是我的HTML:

<ul>
  <li>Fruits
    <ul>
      <li>Apple</li>
      <li>Mango</li>
      <li>Banana</li>
      <li>Orange</li>
      <li>Guava</li>
    </ul>
  </li>
</ul>
<ul>
  <li>Cars</li>
</ul>
<ul>
  <li>Bikes</li>
</ul>
<ul>
  <li>Cities
    <ul>
      <li>Lucknow</li>
      <li>Kanpur</li>
      <li>Varanasi</li>
      <li>Delhi</li>
      <li>Ghaziabad</li>
    </ul>
  </li>
</ul>
<ul>
  <li>Countries</li>
</ul>
<ul>
  <li>Celebrities</li>
</ul>

我想用“西瓜”替换列表项“Banana”。我编写了以下jQuery代码并且工作正常:

$("li").slice(3, -12).text("Watermelon");

但是,要计算索引号并将其传递给slice(),我想,这不是正确的方法。所以我想通过文本“Banana”进行搜索,并将其替换为“Watermelon”文本。

2 个答案:

答案 0 :(得分:3)

这样的东西
$("li").filter(function(){ return $(this).text() == "Banana"; }).replaceWith( "<li>Watermelon</li>");

我相信你想做的不仅仅是更换字符串。

jQuery的 replaceWith 用完全新的元素替换匹配的元素。

答案 1 :(得分:0)

您可以调用此函数来替换值并将banana传递为text_to_search,将西瓜传递为

function replace_function(text_to_search,text_to_replace){
    $('ul li').each(function () {
        $(this).text === text_to_search ? $(this).text(text_to_replace) : '';
    });
}