JQuery的Unique()函数不能正常工作

6
我正在开发一个界面,允许用户选择多个“卡片”。每张卡片都有一个"data-name"属性,也可能对应一个菜单项。如果在主视图中选择了该卡片,则还会突出显示菜单项。当某些东西被点击时,我会向其添加“selected”类。然后,我获取所有“selected”项并计算唯一的"data-name"属性的数量,以获取实际选择的项目数。
当选择最多5个项目时,这很有效。由于某种原因,在第6个项目上,unique()函数似乎停止正常工作。我无法使用jsfiddle复制此问题,但是代码少了一些复杂性,因为我在本地还处理了“类型”,但我认为这与问题无关。
因此,这里是我选择第5个项目后相关数组的一些截图。 在这里,您可以看到所有选定的项目。有10个,如预期。这个断点就在unique()调用之前。 Here you see ALL selected items.  There are 10, as expected. 在这里,您可以看到唯一的选定项目。有5个,如预期。 Here you see unique selected items.  There are 5, as expected. 然后我选择第6个... 12,如预期... And then I select the 6th one... 然后我们有了一个神秘的重复!为什么??? enter image description here 这发生得非常一致;每一次都是如此。请注意,无论我最后选择哪个项目。我添加了多达10个虚拟项目,它总是在第6个上混淆。
1个回答

22

jQuery.unique()引用:

描述:对DOM元素的数组进行去重并就地排序。请注意,这仅适用于DOM元素的数组,而不是字符串或数字。

如果您想获取一个唯一的字符串或数字数组,您需要使用自己的函数。以下是从之前类似问题的已回答问题中提取的一个函数示例:

function unique(array) {
    return $.grep(array, function(el, index) {
        return index == $.inArray(el, array);
    });
}

这个函数虽然非常紧凑,但是它的表现如预期一样良好;祈求好运。 - Ajowi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接