【问题标题】:How to get each hashtag inside the element and hide it?如何获取元素内的每个主题标签并将其隐藏?
【发布时间】:2022-02-08 12:09:20
【问题描述】:

所以我有一个 div,其中包含对包含主题标签的项目的描述。我想获取每个现有的主题标签并希望隐藏所有现有的主题标签,以便它们具有隐藏类。我该怎么做?

var element = $('#product-nav-description');
var rgxp = new RegExp(/^#\!/, 'g');
var hashtag = '#';
var repl = '<span class="hidden">' + hashtag + '</span>';


element.html(element.html().replace(hashtag, repl));
.hidden {
  background-color: yellow;
  font-weight: bold;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<div id="product-nav-description">
  <p>
    Dummy Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum #machine #vendingmachine #mach #tech
  </p>
</div>

【问题讨论】:

  • 试试addClass
  • 使用replaceAllelement.html(element.html().replaceAll(hashtag, repl));

标签: javascript html jquery


【解决方案1】:

您可以使用我更改的正则表达式。你可以运行代码来测试

var element = $('#product-nav-description');
var rgxp = new RegExp(/([#])\w+/g);
//var hashtag = '#';
//var repl = '<span class="hidden">' + hashtag + '</span>';
var str_content_origin = String(element.get(0).outerHTML);
var str_content = str_content_origin.match(rgxp);
$.each(str_content, function(i,v){
    var hashtag = v.trim();
    var repl = '<span class="hidden">' + v + '</span>';
    //console.log(element.html());
    element.html(element.html().replace(hashtag, repl));
})
.hidden {
  background-color: yellow;
  font-weight: bold;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="product-nav-description">
  <p>
  Dummy Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum #machine #vendingmachine #math #tech
  </p>
</div>

【讨论】:

    【解决方案2】:

    使用replaceAll

    EDIT 替换所有#words

    var element = $('#product-nav-description');
    var rgxp = new RegExp(/#[a-z]*/, 'gmi');
    var hashtag = '#';
    var repl = '<span class="hidden">' + hashtag + '</span>';
    
    
    element.html(element.html().replaceAll(rgxp, repl));
    .hidden {
      background-color: yellow;
      font-weight: bold;
    }
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
    
    <div id="product-nav-description">
      <p>
        Dummy Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum #machine #vendingmachine #mach #tech
      </p>
    </div>

    【讨论】:

    • 我想隐藏整个主题标签,包括单词而不仅仅是主题标签。我想隐藏#machine #vendingmachine #mach #tech 而不仅仅是#
    • 抱歉,误会了。请查看编辑
    • 标签也隐藏了
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-10-12
    • 2011-06-18
    • 1970-01-01
    • 2021-12-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多