我似乎找不到一个确定的答案。请考虑以下内容:
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
的一组输入中的重复值。它们散布在表单中,因此不相邻。
next().val()
总是未定义的。我使用了错误的函数吗?如何简单地查看下一个元素?我可以访问索引,但我不知道如何使用它。
编辑:
阅读评论和答案后,我意识到 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();
});
如果有人通过谷歌找到这篇文章,其他人提供的答案可能是一个不错的替代方案,但对于我的需求,我发现这个已经足够了。
next()
方法将获取下一个兄弟元素,而不一定是匹配集合中的下一个元素。 - Rory McCrossan