gpt4 book ai didi

javascript - 如果元素对象在数组中,则不要推送相同的元素对象

转载 作者:行者123 更新时间:2023-11-28 04:38:53 26 4
gpt4 key购买 nike

我正在向这样的数组添加元素对象

window.elements = [];

var newElement = $(".element");
elements.push( newElement );

当单击一个元素时,它会使用上面的代码添加到数组中;如果我单击同一元素两次,即使该元素对象已在数组中,也会再次添加同一对象。

如何检查元素对象是否已经在数组中;不要添加它。我尝试了以下方法,但即使它在数组中也得到 -1。

var newElement = $(".element");
if( jQuery.inArray( newElement, elements ) ) {
elements.push( newElement );
}

最佳答案

这是因为 jQuery.inArray 使用 === 并且两个单独的对象永远不会与 === 相同,因为它们指向引用不同的引用。当你执行$(选择器)时,你总是会得到一个新的对象。因此它们是指向同一 DOM 元素的两个不同引用。

因此,您可以做的是(一个可能的解决方案)向对象添加一个属性。

单击对象时设置数据属性

var newElement = $(".element");
if( ! $(".element").attr("data-arr")) {
elements.push( newElement );
$(".element").attr("data-arr", true);
}

关于javascript - 如果元素对象在数组中,则不要推送相同的元素对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43955671/

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