我正在开发一个允许用户选择多个“卡片”的界面。每张卡都有一个“数据名称”属性,也可能有相应的菜单项。如果他们在主视图中选择卡片,它也会突出显示菜单项目。点击某些内容后,我将“selected”类添加到其中。然后,我获取所有“已选择”项目并计算唯一数据名称属性以获取所选实际项目的数量。
最多可选择5个项目时效果很好。出于某种原因,在第6项上,unique()函数似乎停止正常工作。我无法用jsfiddle复制这个问题,但是代码有点复杂,因为本地我也处理“类型”,但我认为这与问题无关。
所以这里是我选择第5项后相关数组的截图。
在这里您可以看到所有选定的项目。正如预期的那样有10个。这个断点就在unique()调用之前。
在这里您可以看到唯一的选定项目。正如预期的那样,有5个。
然后我选择第6个...... 12,正如所料......
Aaand现在我们有一个神秘的复制品!为什么???
这种情况一直发生;每一次。请注意我选择的项目无关紧要。我添加了多达10个虚拟物品,它总是第6个被弄糊涂了。
答案 0 :(得分:20)
描述:在删除重复项的情况下对DOM元素数组进行排序。请注意,这仅适用于DOM元素的数组,而不适用于字符串或数字。
如果您想获得一个独特的字符串或数字数组,则需要使用自己的函数。这是从a previously answered question similar to yours中获取的:
function unique(array) {
return $.grep(array, function(el, index) {
return index == $.inArray(el, array);
});
}