hoverIntent触发select元素的'out'函数

时间:2010-01-20 20:56:35

标签: jquery hoverintent

以下代码用于显示和隐藏Mega Dropdown。如果你鼠标悬停在'dropDown'类的链接上,那么它的子节点'。dropPanel'会显示。只要您的鼠标位于链接或下拉面板上,就会显示下拉面板。将光标移动到链接或面板的任何位置,并隐藏面板。非常基本的东西。

在其中一些Mega Dropdown中,有些表格包含选择元素。在Firefox中,一切都很好。在IE中(具体来说,8没有测试任何其他版本),如果你鼠标悬停在下拉面板中的select元素上,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');
                });
            }

2 个答案:

答案 0 :(得分:6)

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

$(".dropDown select").mouseout(function(e) {
        e.stopPropagation();
});

答案 1 :(得分: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);
});