【发布时间】:2016-03-29 00:40:03
【问题描述】:
我似乎无法为此找到明确的答案。考虑以下几点:
var dupe = false;
$(".syndUID").sort(function(a,b) {
return a - b;
}).each(function(i, el) {
alert($(this).val() + " - " + $(this).next().val());
if($(this).val() == $(this).next().val()) {
dupe = true;
return;
};
});
此代码尝试在具有类syndUID 的一组输入中查找重复值。它们分散在一个表单中,因此在 DOM 中不会彼此相邻。
next().val() 虽然总是未定义。我使用了错误的功能吗?我如何简单地窥视下一个元素?我可以访问索引,但我什至不知道如何使用它。
编辑:
阅读 cmets 和答案后,我意识到 jQuery 中确实没有合适的迭代器,这对我来说似乎很愚蠢,因为它提供了 each()。上面的代码还有另一个错误。这是我使用的最终解决方案:
// duplicate check
var dupe = false;
var prevVal = undefined;
$(".syndUID").sort(function(a,b) {
return $(a).val() - $(b).val();
}).each(function() {
if($(this).val() == prevVal) {
dupe = true;
return false;
}
prevVal = $(this).val();
});
对于通过 google 找到此问题的任何人,其他人提供的答案可能是一个不错的替代解决方案,但对于我的需要,我发现这已经足够了。
【问题讨论】:
-
next()将获得下一个兄弟元素,不一定是匹配集中的下一个元素。 -
所以我们得到了这个问题:stackoverflow.com/questions/3670136/….
-
你只想知道是否有重复值?至少这就是代码所暗示的(对我而言)
-
你到底想做什么?我们有很多选择,也有很多未知数。是否可以有超过 1 个重复项,您是否只是想在有重复项时警告用户?
标签: javascript jquery