从li标签内的字符串替换/删除文本的最佳方法

时间:2016-04-18 12:37:31

标签: jquery

我正在使用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="http://website.dev/about-us/meet-the-directors">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="http://website.dev/careers">Careers</a>

        </li>

      </ul>
    </li>

  </ul>
</li>

我尝试了以下jQuery没有运气,只是根本没有替换这个词:

$(document).ready(function(){
    if($('li:contains("Parent")')){
    $(this).replace('Parent','');
  };
});

正如您所看到的,我正在尝试使用jQuery。任何人都可以对正确的方法有所了解吗?

2 个答案:

答案 0 :(得分:4)

jQuery没有replace方法,它是字符串的本地方法,这意味着你必须先将文本作为字符串,例如使用text() ,然后再将返回的字符串返回

$(document).ready(function(){
    $('li > a:contains("Parent")').text(function(_, txt) {
        return txt.replace('Parent','');
    });
});

答案 1 :(得分:0)

您可以将replace()方法与正则表达式一起使用,以确保替换该单词的所有实例。带字符串的replace()仅替换第一次出现。

$(document).ready(function(){
  var elements = $('li');
  elements.html(elements.html().replace(/Parent/gi, ''));
});