5

下面的代码用于显示和隐藏 Mega Dropdowns。如果您将鼠标悬停在具有“dropDown”类的链接上,则会显示子“.dropPanel”。只要您的鼠标悬停在链接或下拉面板上,下拉面板就会保持显示。将光标移动到链接或面板以外的任何位置,面板将被隐藏。很基本的东西。

在其中一些 Mega Dropdowns 中有一些包含选择元素的表单。在 Firefox 中,一切都很好。在 IE(特别是 8,没有测试任何其他版本)中,如果您将鼠标悬停在下拉面板中的选择元素上,hoverIntent 会触发 dropPanelOff() 的“out”函数并且下拉面板隐藏。

我该如何防止这种情况?

        // Apply Hover Intent to Menu Panels
        $(".dropDown").hoverIntent({
            sensitivity: 10, 
            interval: 150, 
            over: dropPanelOn, 
            timeout: 150, 
            out: dropPanelOff
        });

            // Menu Over function call
            function dropPanelOn() {
                $('a[rel="dropLink"]', this).addClass('hover');
                $('.dropPanel', this).slideDown('fast');
            }

            // Menu Out function call
            function dropPanelOff() {
                obj = this;
                $('.dropPanel', this).slideUp(100, function(){
                    $('a[rel="dropLink"]', obj).removeClass('hover');
                    $('.dropLink span', obj).removeClass('hover');
                });
            }
4

2 回答 2

6

尝试将此添加到您的代码中:

$(".dropDown select").mouseout(function(e) {
        e.stopPropagation();
});
于 2011-02-15T02:21:40.760 回答
0

也许您应该只使用本机悬停事件,您也可以为其添加延迟:

var time = false;
$(".dropDown").hover(function () {
   if ($("dropPanel", this).is(":hidden")) $("dropPanel", this).slideDown('fast');
   else window.clearTimeout(timer);
}, function () {
   var obj = $(this);
   timer = window.setTimeout(function () {obj.slideUp(100);}, 150);
});
于 2010-12-01T12:14:13.453 回答