JavaScript删除Div元素

时间:2016-11-27 09:20:38

标签: 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>

3 个答案:

答案 0 :(得分:1)

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

注意:以下两个示例适用于您预期的相同脚本。它是一个通用脚本,适用于两个示例

示例1

&#13;
&#13;
<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>
&#13;
&#13;
&#13;

示例2

&#13;
&#13;
<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>
&#13;
&#13;
&#13;

答案 1 :(得分:1)

我想告诉你其他地方没有别的什么

var seen='';
var array=document.getElementsByTagName("div")[0].innerHTML.split(" ");
array.forEach(function(a,index){
        var see=a;
        if(seen.match(see)){
            array.splice(index, 1);}
        else{
            seen=seen+a+" ";
        }
    });

$("div").text(seen);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div>Book Book Book Pencil Pencil</div>

答案 2 :(得分:0)

&#13;
&#13;
var seen = '';

$('div').each(function() {
  $(this).text($(this).text().replace(/(^|\s+)(\S+)(($|\s+)\2)+/gi, "$1$2"));
  var see = $(this).text();
  if (seen.match(see)) {
    $(this).remove();
  } else {
    seen = $(this).text();
  }
});
&#13;
<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 pencil Pencil * * . . .</div>
<div>Book</div> <div>Book</div> <div>Pencil</div> <div>Book</div> <div>Pencil</div>
&#13;
&#13;
&#13;