indexOf jQuery 对象总是 returns -1

indexOf a jQuery object always returns -1

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

<div class="element" style="width:100px;height:100px;border:1px solid black;"></div>
<script src="https://code.jquery.com/jquery-3.2.1.min.js"></script>
<script>
var hovered = [];
$(document).ready(function(){
    $(".element").hover(function(){
        hovered.push($(this));
        console.log(hovered.indexOf($(this)));
    });
});
</script>

每当我将鼠标悬停在 div 上时,-1 总是会记录到控制台。为什么会这样,什么是潜在的解决方法?

改为

hovered.push(this)

hovered.indexOf(this)

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

按如下方式更改您的代码:

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

        hovered.push( $this );

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