表格中的Jquery问题选择下拉隐藏

时间:2012-02-16 01:01:39

标签: javascript jquery html css

我有一个下拉菜单,其中包含数量的表单选择选项。下拉使用Jquery悬停。因此,在菜单图标悬停时,会出现下拉菜单,当您超过它时,它会隐藏。每当我尝试更改选择选项时,它会显示剩余的数量。但是,当我将鼠标悬停在其他选项上或关闭第一个选项时,整个下拉菜单会隐藏。

$("#navigation #seven").live({
    mouseenter:function(){
        $(this).find('ul').show();
    },
    mouseleave:function() {
        $(this).find('ul').hide();
    }
});

3 个答案:

答案 0 :(得分:2)

发生这种情况是因为当您尝试进入选择时,您正在使用menuitem。

您必须环绕菜单项并按容器选择并将鼠标悬停在div上

<div id="hoverable">
   <menuitem />
   <select style="display:none"><option></option></select>
</div>

然后,将悬停应用于div

$('#hoverable').hover(function(){
   $(this).find('select').show();
}, function(){
   $(this).find('select').hide();
});

答案 1 :(得分:1)

我建议在悬停时设置超时,让我们说几百毫秒。在菜单中,将鼠标悬停在其上时设置为true,在悬停时设置为false。因此,如果您的菜单图标悬停在该标志上,则它不会隐藏下拉菜单。

示例:

var overMenu = false;
$(menuItem).hover(
    function() {
        $(dropDownMenu).show();
    },
    function() {
        setTimeout(function() {
            if ( !overMenu )
                $(dropDownMenu).hide();
        }, 200);
    }
);
$(dropDownMenu).hover(
    function() { overMenu = true; },
    function() {
        overMenu = false;
        $(this).hide();
    }
};

答案 2 :(得分:0)

知道了!

var hover_off = false;
var hover_count = 1000;

$("#navigation #seven").live("mouseover",function(){
    hover_off = false;
    $(this).find('ul').show();
});

$("#navigation #seven").live("mouseout",function(){
    hover_off = true;
    setTimeout(myMouseOut, hover_count);
});

function myMouseOut() {
    if (hover_off) {
        $("#navigation #seven").find('ul').hide();
    }
}
相关问题