1

我为一个问题苦苦挣扎了好几天,找不到答案。

我有一点鼠标悬停的东西,它在所有浏览器中都可以正常工作,但在 IE7、IE8 或 IE9 中却没有(惊喜)。

目的是 div 在鼠标悬停在菜单点上时出现,并在离开菜单或 div 时消失。我猜我已经将问题隔离到以下行: if ($('#top-navigation').is(':hover') || $('#header').is(':hover') | | $('#menu a').is(':hover')) { 由于 IE 中的行为,我很确定这就是麻烦所在。

$(document).ready( function() {
    $mypage = $("body").attr("class");
    $("#"+$mypage).show();
    $("#menu a:contains('"+$mypage+"')").parent().addClass("current");

    $("#menu a").hover(function() {
        $(".transparent").hide();

        $("#menu li").removeClass("current");
        $(this).parent().addClass("current");

        $element = "#" + $(this).text();
        $($element).show();
    });

    function hide_popup(){
        if ($('#top-navigation').is(':hover') || $('#header').is(':hover') || $('#menu a').is(':hover')) {
            return false;
        }else{
            $("#menu li").removeClass("current");
            $(".transparent").hide();

            $mypage = $("body").attr("class");
            $("#"+$mypage).show();
            $("#menu a:contains('"+$mypage+"')").parent().addClass("current");
        }
    };
    $("body").mouseover(function() {
        window.setTimeout( hide_popup, 2000 );
    });
});

我很高兴得到任何帮助!干杯!

4

2 回答 2

1

好的,我想出了一个解决方案:

function hide_popup(){
    $("#top").hover(function () {
        return false;
    },function () {
        $("#menu li").removeClass("current");
              $(".transparent").hide();

        $mypage = $("body").attr("class");
        $("#"+$mypage).show();
        $("#menu a:contains('"+$mypage+"')").parent().addClass("current");
    });
};
于 2012-04-17T10:44:02.937 回答
0

IE 在 CSS 中的动态伪类及其对应的 JavaScript 事件中一直存在臭名昭著的问题。您可以做的最好的事情是跟踪鼠标移动并仅在鼠标进入目标元素区域时触发您的代码例程。换句话说,您应该将 mouseover 事件与 screenX 和 screenY 事件属性结合使用。

于 2012-04-16T10:05:04.323 回答