javascript - 带有 jQ​​uery mouseleave 的下拉菜单,mouseenter 问题

标签 javascript jquery html css

当我将鼠标悬停在内容区域时,我的下拉超时未清除。我不想在悬停时隐藏内容区域。解决这个我这次真的很困惑。 HTML

<button data-drp-hover="mynewid">HOVER</button>
<div class="drp-content" data-drp-content="mynewid">
<span>Item 1</span>
<span>Item 1</span>
<span>Item 1</span>
<span>Item 1</span>
<span>Item 1</span>
</div>

CSS

[data-drp-content] {
display:none;
}
.drp-show[data-drp-content] {
display: block;
}

JS

$("[data-drp-hover]").mouseenter(function () {
    var _drp_x = $(this);
    var _drp_container = $(this).attr("data-drp-hover");
    var _drp_content = $('[data-drp-content="' + _drp_container + '"]');
    _drp_content.addClass("drp-show");
    _drp_content.siblings().removeClass("drp-show");
    $(document).click(function (event) {
        _drp_content.removeClass("drp-show");
    });
    $(_drp_x, _drp_content).click(function (event) {
        event.stopPropagation();
    });
    $(_drp_x, _drp_content).on("mouseleave", function () {
        var timer = setTimeout(function () {
            _drp_content.removeClass("drp-show");
        }, 1000);
        $(_drp_content).on("mouseenter", function () {
            clearTimeout(timer);
        });
    });
});

最佳答案

笔:https://codepen.io/anon/pen/GEvEZZ

将 var timer 移到方法的顶部。

// Move the timer to here
var timer;
$("[data-drp-hover]").mouseenter(function () {
    var _drp_x = $(this);
    var _drp_container = $(this).attr("data-drp-hover");
    var _drp_content = $('[data-drp-content="' + _drp_container + '"]');
    _drp_content.addClass("drp-show");
    _drp_content.siblings().removeClass("drp-show");
    $(document).click(function (event) {
        _drp_content.removeClass("drp-show");
    });
    $(_drp_x, _drp_content).click(function (event) {
        event.stopPropagation();
    });
    $(_drp_x, _drp_content).on("mouseout", function () {
        // Should not be var
        timer = setTimeout(function () {
            _drp_content.removeClass("drp-show");
        }, 1000);
        $(_drp_content).on("mouseenter", function () {
            clearTimeout(timer);
        });
    });
});

关于javascript - 带有 jQ​​uery mouseleave 的下拉菜单,mouseenter 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44720856/

相关文章:

javascript - 如何为我的段落添加行号?

javascript - 在 iframe 的文档和/或 shadow-root 中注入(inject) html dom

javascript - JCarousel JQuery 插件,需要一些帮助

javascript - JavaScript 数组和拆分问题

javascript - 帮助自动调整背景图像的大小

javascript - jQuery 历史插件、Google 站点地图和 SEO

javascript - Rails Javascript 文件中的 CSS

javascript - 根据选择选项更改 jQuery UI slider 值

html - 如何左对齐,居中文本?

javascript - 使用 Javascript 按行数据对 HTML 表格进行排序