9

我在检查 IE8 中 div 的状态时遇到问题。我想检查鼠标当前是否悬停在某些 div 上。目前在 IE8 中,我收到以下错误: Syntax error, unrecognized expression: hover. 下面是导致错误的jQuery:

// This function will close the slideout of widgets
function CloseWidgetPanel()
{
    if (!$("#widgets").is(":hover") && !$(".widgetPanel").is(":hover"))
    {
        if ($("#widgets").is(":animated"))
        {
            $("#widgets").stop(true, true);
        }
        $("#widgets").hide("slide", { direction: "right" }, 300);
    }
    else
    {
        // We are currently hovering over a panel, so check back in 2 seconds.
        setTimeout(CloseWidgetPanel, 2000);
    }
}
4

2 回答 2

10

替代方式:

$(".widgetPanel, #widgets").hover(function() {
    $(this).toggleClass('hover')
});

然后:

if (!$("#widgets").is(":hover") && !$(".widgetPanel").is(":hover"))

change to

if (!$("#widgets").hasClass('hover') && !$(".widgetPanel").hasClass('hover'))
于 2012-12-05T17:45:06.167 回答
7

jQuery 没有实现:hover选择器并且 IE8 不支持queryselectorall,因此它失败了。您必须找到另一种方法来检测元素当前是否悬停在上面,例如设置全局(或父范围)变量或将状态类/属性应用于元素的 mouseenter 和 leave 事件。

于 2012-12-05T17:41:38.873 回答