【问题标题】:How can I remove duplicates from each item in jsrender template?如何从 jsrender 模板中的每个项目中删除重复项?
【发布时间】:2020-01-30 14:35:44
【问题描述】:

我正在尝试从 jsrender 中的每个 div 中删除重复文件,但由于所有重复项都已删除,因此无法正确执行。

$('.media-holder').each(function () {
  $('.media-item').each(function () {
    $('.media-item:contains("' + $(this).text() + `enter code here`'"):gt(0)').remove();
  });
});

当前输出:

**Files part 1**
abc file
def file
abc file
**Files part 2**
abc file
def file
abc file
def file
ghi file

期望的输出:

**Files part 1**
abc file
def file
**Files part 2**
abc file
def file
ghi file

【问题讨论】:

  • 首先,JS 引号似乎损坏了,并且“在此处输入代码”无助于澄清问题。其次,请将所有相关的 HTML 添加到问题中,以便我们可以复制问题
  • {{for AgendaPaperAssets}} {{if AudioSrc || AudioSrc2}} {{/if}} {{/for}}
  • 请使用问题下方的edit 链接,因为 cmets 中的代码不可读。查看 实际 HTML 输出而不是模板也会更有帮助,因为模板本身与问题无关
  • 是的多个媒体项目,或者我可以将类更改为音频(多个音频)。
  • 在上面的 html 代码中,我试图不为 for 循环的每个项目复制
  • 项目。

标签: javascript jquery duplicates jsrender


【解决方案1】:

使用media-holder 作为selector context

$('.media-holder').each(function(i, holder) {
  $('.media-item').each(function() {
    $('.media-item:contains("' + $(this).text() + '"):gt(0)', holder).remove();
  });
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<div class="media-holder">
  <div class="media-item">abc file</div>
  <div class="media-item">def file</div>
  <div class="media-item">abc file</div>
</div>
<br/>
<div class="media-holder">
  <div class="media-item">abc file</div>
  <div class="media-item">def file</div>
  <div class="media-item">abc file</div>
  <div class="media-item">def file</div>
  <div class="media-item">ghi file</div>
</div>

【讨论】:

  • 太棒了!这对我有用:))谢谢。你能解释一下 i 和 holder 在此处的 javascript 函数中的含义吗?
  • 它们只是变量,其中i 是索引,holder (media-holder) 是 HTML 元素。查看docs了解更多信息
猜你喜欢
相关资源
最近更新 更多
热门标签