首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >.hover()方法奇怪行为

.hover()方法奇怪行为
EN

Stack Overflow用户
提问于 2016-02-28 14:12:27
回答 1查看 33关注 0票数 0

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

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

代码语言:javascript
复制
$('#navigation-menu>li').on('mouseenter', function (event) {
    console.log("HOVERED!");
}).on('mouseleave', function(){
    console.log("MOUSELEAVE!");
});

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

代码语言:javascript
复制
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部件:

代码语言:javascript
复制
<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>

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

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

这怎麽可能?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-02-28 16:29:23

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

代码语言:javascript
复制
<script>
(function(){
    $('#navigation-menu>li').on('mouseenter', function () {
        console.log("HOVERED!");
    }).on('mouseleave', function(){
        console.log("MOUSELEAVE!");
    });
})();
</script>
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35683547

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档