javascript - mouseenter mouseleave 没有按照我认为应该的方式工作

标签 javascript jquery

我对 jQuery 比较陌生,我似乎被这个 mouseenter/mouseleave 问题困扰。我想设置一个当页面不在顶部时“隐藏”的菜单,这似乎工作正常,当它隐藏时我想这样做,以便当用户将鼠标悬停在它上面时类切换和菜单回来了。但是,当它滚动回顶部时我不希望出现这种情况。当页面首次加载(在 Firefox 和 Chrome 中)并且我还没有滚动时,它工作正常,但向下滚动并返回到顶部后,菜单将隐藏在 mouseleave 上。

这是一个jsFiddle我当前的代码设置。

我已经尝试解决这个问题有一段时间了,并尝试了一些其他方法。

我尝试像这样使用悬停

$("#access").hover(function() {
            $(this).removeClass("scroll").addClass("normal");
        }, function() {
            $(this).removeClass("normal").addClass("scroll");
        });

但这与我现在拥有的代码做了同样的事情。

我尝试过的其他一些方法是将 b 变量传递给另一个函数,创建一个单独的 div 并跟踪它的位置以确定是否使用 mouseenter/mouseleave,最后绑定(bind)它们,但这些都没有似乎按我的想法工作。

我想不出还有什么可以尝试的,所以我不确定这是否是我做错的事情,或者这是否甚至不可能像这样完成。

这是我的第一个问题,我试图包含尽可能多的信息,希望有足够的信息。

最佳答案

试试这个

$(document).ready(function() {
    $(window).scroll(function() {
        var b = $(window).scrollTop();
        $("#access").toggleClass("normal", b == 0)
        $("#access").toggleClass("scroll", b > 0)
    });
    $("#access").hover(function() {           
        if($(window).scrollTop() > 0){
            $("#access").toggleClass("normal scroll");
        }
    });
});​

http://jsfiddle.net/bJquD/6/

关于javascript - mouseenter mouseleave 没有按照我认为应该的方式工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11874132/

相关文章:

javascript - HTML Javascript问题在实时代码编辑器中插入脚本标签

javascript - 根据对象值从数组中删除对象

javascript - 我如何使用 jquery 中的类存储元素值

javascript - MVC4 和日期选择器 : "0x800a01b6 - JavaScript runtime error: Object doesn' t support property or method 'datepicker' "

jquery - 保持 2 个 div 的高度相同,即使在它们内部的内容被过滤后

javascript - JS Lint - 严格违反 - 在构造函数对象中定义函数

javascript - 为什么 number + string 在 javascript 中是一个字符串?

javascript - 在 ssh2-sftp-client 中使用 ssh 指纹

javascript - Javascript 和 jQuery 中的 Trapping Function not defined 错误

jquery - 单击复选框时向父元素添加/删除类