1

所以,我有 span 元素,我在其中附加了一些内容 - 有时这些内容是重复的。如何删除与另一个重复的这个值...

这是我的输出 html 的样子:

<span class="some_class">
   "value01" 
   "value01" 
   "value02" 
   "value03" 
   "value03" 
</span>

我无法添加任何功能,因为我不知道该怎么做,你能帮我吗?

4

2 回答 2

2

如果这些值是由 JS 代码添加的,那么你可以这样:

http://jsfiddle.net/Sahadar/Nzs52/5/

您只需要创建一个对象,它将存储放置在这个范围内的所有字符串,然后在插入之前检查这个插入的字符串是否已经在存储对象中。

function(event) {
        var textareaValue = textarea.value();
        if(insertedTexts[textareaValue]) {
             event.preventDefault();
             textarea.value('');                         
         } else {
             insertedTexts[textareaValue] = true;
             someSpan.append("\""+textareaValue+"\"");
         }
    }

如果这些值已经在 span 内,请使用如下函数:

var someSpan = $('.some_class');
var insertedTexts = [];

var result = someSpan.text().match(/"\w+(?=\")/gm);
result = result.map(function(value) {
    return value.substring(1,value.length);
});
result.forEach(function(value) {
    if(insertedTexts.indexOf(value) === -1) {
        insertedTexts.push(value);
    }
});
var newSpanText = "\""+insertedTexts.join('""')+"\"";
someSpan.text(newSpanText);
console.info(result, insertedTexts);

它正在重建跨度文本(修剪等),但保留了主要功能。

jsFiddle 工作副本:

http://jsfiddle.net/Sahadar/kKNXG/6/

于 2012-12-12T09:55:43.297 回答
0

创建数组变量

var vals = [];

它跟踪项目。然后,在将项目附加到跨度检查的函数中:

if (vals.indexOf("Mynewvalue") > -1) {
  // Add to the span...
}
于 2012-12-12T10:04:48.303 回答