javascript - 悬停时保持下拉菜单打开 jQuery

标签 javascript jquery

我正在制作一个快速的动画下拉菜单。当您在初始按钮上鼠标悬停mouseout时,它工作得很好。当您将鼠标悬停在下拉菜单本身上时,我无法让 HTML div 下拉到“保持”状态。这是我正在做的事情的 fiddle :http://jsfiddle.net/kAhNd/

这是我在 JS 中所做的事情:

$('.navBarClickOrHover').mouseover(function () {
    var targetDropDown = $(this).attr('targetDropDown');
    var targetDropDownHeight = $('#' + targetDropDown).height();
    $('#' + targetDropDown).animate({
        'height': '200px'
    });
}).mouseout(function () {
    if ($('.dropdownCont').is(':hover') || $('.navBarClickOrHover').is(':hover')) {

    } else {
        var targetDropDown = $(this).attr('targetDropDown');
        var targetDropDownHeight = $('#' + targetDropDown).height();
        $('#' + targetDropDown).animate({
            'height': '0px'
        });
    }
});

它可以工作,但是当您将鼠标悬停在该元素上时,该元素不会保持下拉状态。我添加了

if ($('.dropdownCont').is(':hover') || $('.navBarClickOrHover').is(':hover')) {

    }

当您将鼠标悬停在“.dropdownCont”上时尝试使其不执行任何操作。

很难解释清楚。抱歉,我希望我说得有道理。任何帮助都是极好的!这是我的 fiddle :http://jsfiddle.net/kAhNd/

最佳答案

这是您转换后的代码 http://jsfiddle.net/krasimir/kAhNd/3/

var button = $('.navBarClickOrHover');
var isItOverTheDropdown = false;
var showDropDown = function() {
    var targetDropDown = $('#' + button.attr('targetDropDown'));
    var targetDropDownHeight = targetDropDown.height();
    targetDropDown.animate({
        'height': '200px'
    });
    targetDropDown.off("mouseenter").on("mouseenter", function() {
        isItOverTheDropdown = true;
    });
    targetDropDown.off("mouseleave").on("mouseleave", function() {
        isItOverTheDropdown = false;
        hideDropDown();
    });
}
var hideDropDown = function() {
    var targetDropDown = $('#' + button.attr('targetDropDown'));
    var targetDropDownHeight = targetDropDown.height();
    targetDropDown.animate({
        'height': '0px'
    });
}

$('.navBarClickOrHover').mouseover(function () {
    showDropDown();
}).mouseout(function () {
    setTimeout(function() {
        !isItOverTheDropdown ? hideDropDown : '';
    }, 500);
});

我想这就是您想要实现的目标。

关于javascript - 悬停时保持下拉菜单打开 jQuery,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18775149/

相关文章:

jquery - 如何使用 jQuery .Ajax 和 Codeigniter 3 重新加载部分 View

javascript - 为动态对象添加类名

javascript - EventEmitter2 的 require.js shim 配置

javascript - Accordion 的滚动相关代码有一些冲突

javascript - 将 JavaScript 数组转换为 Java 数组插入

javascript - 使用动态内容调整父元素的大小

javascript - 如何检查日期之间的差异

jquery - 鼠标悬停在带有附加信息的 div 上滑动 - 如何?

javascript - 使用 jQuery 换行函数

jquery - elem.is (':checked' ) vs elem.prop ('checked' )