gpt4 book ai didi

javascript - jQuery 如何在 each() 中向前看?

转载 作者:数据小太阳 更新时间:2023-10-29 04:20:26 27 4
gpt4 key购买 nike

我似乎无法为此找到明确的答案。请考虑以下事项:

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() 始终未定义。我使用了错误的功能吗?我如何简单地向前看下一个元素?我可以访问索引,但我什至不知道如何使用它。

编辑:

阅读评论和答案后,我意识到 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();
});

对于任何通过谷歌找到这个的人来说,其他人提供的答案可能是一个不错的替代解决方案,但对于我的需要,我觉得这已经足够了。

最佳答案

您可以执行类似$('.syndUID')[i+1] 的操作来重新抓取列表,专注于该元素(并可选择将其转回 jQuery 对象)

使用 [i+1] 将返回一个 DOM 元素,但您可以使用 .eq(i+1) 返回一个 jQuery 对象。或者,如果您讨厌 future 的开发人员,请将 DOM 元素包装在 $() 中,因为可读性太差了!

正如安德烈亚斯所说——重新抓取列表是在浪费内存。在循环之前,使用 var element = $('.syndUID') 将对象缓存到一个变量中,这样您就不会过多地迭代 DOM。

关于javascript - jQuery 如何在 each() 中向前看?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34421097/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com