【问题标题】:Remove all div with same html value using jQuery使用 jQuery 删除所有具有相同 html 值的 div
【发布时间】:2021-10-09 07:41:36
【问题描述】:

我有以下html结构

 <div class="messagesdate">03 Aug, 2021</div>
  <div class="messagesdate">03 Aug, 2021</div>
  <div class="messagesdate">03 Aug, 2021</div>
  <div class="messagesdate">04 Aug, 2021</div>
  <div class="messagesdate">04 Aug, 2021</div>

我怎样才能执行一个全局函数,它将遍历所有 div 并删除除第一个之外的所有具有相同日期的对象?

这是我到目前为止所做的,但我被卡住了

var found = {};
        $('.messagesdate').each(function (i) {
            var $this = $(this);
            if (found[$this.html()]) {
                $this.remove();
            } else {
                found[$this.html()] = true;
            }
        });

【问题讨论】:

  • 要删除相同日期的重复 div 吗?
  • 是,除了第一个 div
  • 那么您的示例的预期输出是什么?
  • 我认为最简单的方法是 1) 构建唯一值列表 2) 删除所有现有标签 3) 根据第 1 点中找到的唯一值重新创建标签

标签: javascript jquery asp.net-mvc


【解决方案1】:

可以做到without jQuery

const dates = {};
document.querySelectorAll("div.messagesdate")
  .forEach(div =>
    dates[div.textContent] ? div.remove() : dates[div.textContent] = 1);
<div class="messagesdate">03 Aug, 2021</div>
<div class="messagesdate">03 Aug, 2021</div>
<div class="messagesdate">03 Aug, 2021</div>
<div class="messagesdate">04 Aug, 2021</div>
<div class="messagesdate">04 Aug, 2021</div>

【讨论】:

    【解决方案2】:
    $('.messagesdate').each(function (i) {
    
             if(i == 0)
               var firstElement = $(this);
             else{
                  if($(this).html() == firstElement.html()){
                  $(this).remove()
               }
         }    
    
    });
    

    【讨论】:

    • 虽然此代码可能会回答问题,但提供有关它如何和/或为什么解决问题的额外上下文将提高​​答案的长期价值。您可以在帮助中心找到更多关于如何写好答案的信息:stackoverflow.com/help/how-to-answer。祝你好运?
    猜你喜欢
    • 2017-11-07
    • 1970-01-01
    • 2020-07-15
    • 2019-11-08
    • 2018-04-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多