选择的Jquery比显示的div长,mouseout事件关闭div

选择的Jquery比显示的div长,mouseout事件关闭div,jquery,jquery-chosen,Jquery,Jquery Chosen,请问我怎样才能解决这个问题?我有一个带有表单的div,默认情况下它是隐藏的。它显示点击事件,我想它隐藏在鼠标外-这是很容易的一部分 但有一个问题,我使用jquery Selected-用于下拉菜单,它在这个div内,但下拉菜单比div长。这意味着,当我选择某个选项时,鼠标指针在带有mouseout事件的div外,当我使用鼠标移动时,它会隐藏 有什么建议吗 多谢各位 jQuery很简单: $('#header_form').mouseleave(function () { $('#head

请问我怎样才能解决这个问题?我有一个带有表单的div,默认情况下它是隐藏的。它显示点击事件,我想它隐藏在鼠标外-这是很容易的一部分

但有一个问题,我使用jquery Selected-用于下拉菜单,它在这个div内,但下拉菜单比div长。这意味着,当我选择某个选项时,鼠标指针在带有mouseout事件的div外,当我使用鼠标移动时,它会隐藏

有什么建议吗

多谢各位

jQuery很简单:

$('#header_form').mouseleave(function () {
    $('#header_form').hide();
});
解决方案1: 经过一个小时的尝试和编码,我找到了一个简单的解决方案: 在#header_form内部创建div,绝对位置宽为#header_form,长为从下拉菜单位置开始的下拉菜单。绝对定位的div不会影响#header_表单的背景颜色,但它会创建不可见的“层”,在该层中,您可以使用鼠标在#header_的“外部”移动,而无需关闭它。当您将鼠标移动到原始#header_形式时,还需要删除此修复元素,以便再次移出时,div将隐藏


此处演示:(只需将蓝色更改为透明)它仍然需要一些调整:)

在找到更好的方法后编辑了我的答案。实际上,你可以很容易地做到这一点。将代码更改为:

$('select').chosen();
var shouldHide;
$('#form').mouseleave(function() {
    if (shouldHide) $(this).hide();
})
.mouseover(function() {
    shouldHide = true;         
});
$('.chosen-container').mouseover(function() {
    shouldHide = false;
})
.mouseleave(function() {
    shouldHide = false;
});

这可能是您的HTML有问题。你也可以发布导航代码吗?这里是演示-我想你可能想重新思考一下你的做法。这将是一个相当棘手的问题,需要一些混乱的javascript,才能按您想要的方式工作。谢谢您的回复,这很有用:)。您的代码对我来说有一个缺陷,但这是我的错,我没有指定它。我的表单显示在悬停状态,我需要它隐藏在鼠标外,但当我不先在表单中移动鼠标时,您的解决方案不会隐藏表单。我想我没有完全理解您。你的表单应该从隐形开始吗?有小一点的按钮吗?如果需要,我可以调整答案。也许可以更新您的JSFIDLE以显示此功能?我很高兴看到这一点,但若这足以解决您的问题,您可以将其标记为答案吗?是的,您是对的,表单显示按钮的悬停效果,并且它在开始时是不可见的。我正在尝试更新它,但该脚本使用cssz索引,并且由于某些原因无法在jsfiddle上工作。在我的网站上,它运行良好-