.hover() 方法奇怪的行为

.hover() method strange behaviour

我正在尝试为站点构建一个主菜单,因此当我将鼠标悬停在菜单的 li 上时,将显示一个 div,其中包含子菜单,其中可能包含 1到 3 个横幅。

这是我在 li 上悬停时用来显示子菜单的代码(此代码仅测试是否捕获了悬停事件):

$('#navigation-menu>li').on('mouseenter', function (event) {
    console.log("HOVERED!");
}).on('mouseleave', function(){
    console.log("MOUSELEAVE!");
});

我还确定 div 中将显示的横幅数量(在我的脚本文件中,这段代码在悬停检查之前。如果重要的话,我也使用 Bootstrap。):

if(!$.trim($("#banner-3-img").html()).length) {
    if(!$.trim($("#banner-2-img").html()).length) {
        $("#banner-1").addClass("col-sm-12");
        $("#banner-2").css("display","none");
        $("#banner-3").css("display","none");
        console.log("1 BANNER");
        return;
    }
    console.log("2 BANNERS");
    $('#banner-1').addClass("col-sm-6");
    $('#banner-2').addClass("col-sm-6");
    $("#banner-3").css("display","none");

}else{
    console.log("3 BANNERS");
    $("#banner-1").addClass("col-sm-4");
    $("#banner-2").addClass("col-sm-4");
    $("#banner-3").addClass("col-sm-4");
}

这是带有这些横幅标记的 html 部分:

<div class="row-fluid">

    <div id="banner-1">
        <a href="#">
            <div id="banner-1-img">
                <img  src="img/mega-menu/banner-1.png" alt=""/>
            </div>
        </a>
    </div>

    <div id="banner-2">
        <a href="#">
            <div id="banner-2-img">
                <img  src="img/mega-menu/banner-3-2.png" alt=""/>
            </div>
        </a>
    </div>

    <div id="banner-3">
        <a href="#">
            <div id="banner-3-img">
                <img  src="img/mega-menu/banner-3-3.png" alt=""/>
            </div>
        </a>
    </div>

</div>

奇怪的是,当我从 #banner-2-img#banner-3-img 中删除 img 元素时,脚本发现我只有 1 个横幅(并设置了所需的 class),但悬停检查代码不起作用 - 当悬停在 li 上时,我没有在控制台中看到 "HOVERED!"。 当我显示 2 或 3 个横幅时,我会收到 "HOVERED!" 消息。

没有其他改变 - 我只删除了 #banner-2-img#banner-3-img 中的 2 个 img 元素。

这怎么可能?

我不知道为什么它在单独的 .js 文件中不起作用(脚本的 link 位于 html 页面的底部,代码在 $(document).ready() 块中),但是当我将悬停检查代码放在 html 页面底部时,一切正常。

<script>
(function(){
    $('#navigation-menu>li').on('mouseenter', function () {
        console.log("HOVERED!");
    }).on('mouseleave', function(){
        console.log("MOUSELEAVE!");
    });
})();
</script>