可以使用jQuery删除重复文本吗?我有以下设置:
<td class="product-name">Instagram workshop - Instagram workshop</td>
<td class="product-name">Product 4 - Product 4</td>
jQuery是否可以删除“-Instagram研讨会”,所以我必须遵循以下输出:
<td class="product-name">Instagram workshop</td>
<td class="product-name">Product 4</td>
答案 0 :(得分:1)
您可以使用product-name
类来获取所有元素,并使用.each()
对其进行迭代。通过使用.each()
,您可以使用$(this)
访问要迭代的当前元素。正如将this
设为jquery对象一样,这将为您提供执行jquery方法的方法。
当您要修改每个td
元素中的文本时,可以通过使用.text()
来完成。 text()
允许您传入一个函数,然后您可以return
想要在元素中显示的新文本的结果。在下面的示例中,我使用了Set
和.split()
来创建唯一单词的容器(由-
分隔)。通过使用扩展语法(...
)将集合扩展回数组,您可以将所有数组元素(即单词)重新连接成一个较大的字符串,该字符串将不再包含重复的单词。
请参见以下示例:
$(".product-name").each(function() {
$(this).text(function(_, txt) {
return [...new Set(txt.split(' - '))].join(' - ');
});
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<table border="1">
<tr>
<td class="product-name">Instagram workshop - Instagram workshop</td>
<td class="product-name">Product 4 - Product 4</td>
<td class="product-name">Product 1 - Product 2 - Product 2</td>
</tr>
</table>
答案 1 :(得分:1)
简单的解决方案是使用正则表达式:
([^\-]+)\s*\-\s*\1
在这里捕获组(在方括号中),然后使用回调引用比较单词。您可以使用它来搜索内容并将其替换为$1
-第一组之间没有任何字符