JavaScript 删除 Div 元素上的重复标签

标签 javascript jquery

如何删除标签元素上的相同文本? 在这种情况下,我发现了这个技巧:

var seen = '';

       $('div').each(function() {
         var see = $(this).text();
         if (seen.match(see)) {
           $(this).remove();
         } else {
           seen = $(this).text();
         }
       });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div>Book</div>
<div>Book</div>
<div>Book</div>
<div>Pencil</div>
<div>Pencil</div>
<div>Book Book Book Pencil Pencil</div>

上面的代码没有错误。因为我在同一个标​​签中包含了相同的几个单词。

<div>Book Book Book Pencil Pencil</div>

有办法解决这个问题吗?

编辑:我想改成<div>Book Pencil</div>

最佳答案

我在下面给出了一个很好的解决方案。

注意:以下两个示例使用与您预期相同的脚本可以很好地工作。这是一个通用脚本,适用于这两个示例

示例 1

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div>Book</div>
<div>Book</div>
<div>Book</div>
<div>Pencil</div>
<div>Pencil</div>
<div>Book</div>
<div>Book Book Book Pencil Pencil</div>


<script>
var tags = [];
   $('div').each(function(){
       var tagArray = $(this).text().split(' ');
     
       for(var i = tagArray.length - 1; i >= 0; i--) {
          var tag = tagArray[i];
          if(tags.indexOf(tag) > -1) {
             tagArray.splice(i, 1);
          } else {
            tags.push(tag);
          }
       }
     
       var currentTag = tagArray.join(' ');
     
        if(currentTag){
            $(this).text(currentTag);
        }
        else{
            $(this).remove();
        }
    });
</script>

示例 2

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div>Book Book Book Pencil Pencil</div>


<script>
var tags = [];
   $('div').each(function(){
       var tagArray = $(this).text().split(' ');
     
       for(var i = tagArray.length - 1; i >= 0; i--) {
          var tag = tagArray[i];
          if(tags.indexOf(tag) > -1) {
             tagArray.splice(i, 1);
          } else {
            tags.push(tag);
          }
       }
     
       var currentTag = tagArray.join(' ');
     
        if(currentTag){
            $(this).text(currentTag);
        }
        else{
            $(this).remove();
        }
    });
</script>

关于JavaScript 删除 Div 元素上的重复标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40827406/

相关文章:

javascript - Jquery 自动完成的 JSON

javascript - 在angularjs中的ng-click函数中获取元素的属性

Javascript href 不正确匹配

javascript - bootstrap 列上的 ngFor 和 ngIf

java - 无法解析来自服务器的 JSON 数据

php - 刷新 WooCommerce Checkout 中某些运输字段更改的打印值

javascript - 屏幕滚动后的 div 容器

javascript - 如何确定 Javascript 数组是否包含具有等于给定值的属性的对象?

Javascript – 确定需要删除或添加的元素数量

javascript - MVC 4 中对 Controller 的 Ajax 调用为空