Javascript jQuery对象的索引始终返回-1

Javascript jQuery对象的索引始终返回-1,javascript,jquery,arrays,indexof,Javascript,Jquery,Arrays,Indexof,我正在使用jQuery,希望在数组中存储悬停元素的列表。我使用的代码如下(您可以将其粘贴到空html文档中进行测试): var悬停=[]; $(文档).ready(函数(){ $(“.element”).hover(函数(){ 悬停。按($(此)); log(hovered.indexOf($(this)); }); }); 每当我将鼠标悬停在div上时,-1总是被记录到控制台。这是为什么?潜在的解决方法是什么?将其更改为 hovered.push(this) 及 您正在创建两个不同的jQ

我正在使用jQuery,希望在数组中存储悬停元素的列表。我使用的代码如下(您可以将其粘贴到空html文档中进行测试):


var悬停=[];
$(文档).ready(函数(){
$(“.element”).hover(函数(){
悬停。按($(此));
log(hovered.indexOf($(this));
});
});
每当我将鼠标悬停在div上时,-1总是被记录到控制台。这是为什么?潜在的解决方法是什么?

将其更改为

hovered.push(this)


您正在创建两个不同的jQuery对象,一个是您推送的对象,另一个是您创建的对象 传递到indexOf(..)

按如下方式更改代码:

$(document).ready(function(){
    $(".element").hover(function() {
        var $this = $( this );

        hovered.push( $this );

        console.log( hovered.indexOf( $this ) );
    });
}); 

因为
{}==={}//false
两个对象永远不会彼此相等。您正在构造两个不同的对象。一个是你推的,一个是你寻找的。这是一个好的解决方案吗?他应该只使用“this”或保留对已创建jQuery对象的引用,推送它,并在查找中使用它。是的,他肯定可以只使用this并保留dom元素
hovered.indexOf(this)
$(document).ready(function(){
    $(".element").hover(function() {
        var $this = $( this );

        hovered.push( $this );

        console.log( hovered.indexOf( $this ) );
    });
});