javascript - 使某些 JS 代码比另一个更重要(鼠标移开时消失)

标签 javascript css

我知道这可能很愚蠢,但我想知道是否有实现的方法。

基本上,即使在鼠标移出父“dropbtn”按钮或元素 3 秒后,我也希望 dropdown-content 元素“保持显示”。

例如代码:

$(function() {
    $('#dropbtn').hover(function() {
        $('.dropdown-content').css('display', 'block');
    }, function() {
        // on mouseout:
        setTimeout(function(){$('.dropdown-content').css('display', 'none');}, 3000);
    });
    $('.dropdown-content').hover(function(){
        $('.dropdown-content').css('display', 'block');
    },function(){
        $('.dropdown-content').css('display', 'none');
    })
});

当前的问题是 setTimeout() 函数在这行 JS 代码上覆盖了我想要的方式:

$('.dropdown-content').css('display', 'block');

换句话说,当且仅当我没有将鼠标光标设置在“下拉内容”div 上时,我希望 setTimeout() 有效。

希望有人能帮忙:)

最佳答案

您可以使用 mouseenter/mouseleave 来“切换”.dropdown-content,而不是使用 hover >,除了 mouseleave 上的 3 秒延迟:

$(function() {
    var dropdownTimeout = null;

    $('#dropbtn').mouseenter(function() {
        if(dropdownTimeout) {
            clearTimeout(dropdownTimeout);
            dropdownTimeout = null;
        }

        $('.dropdown-content').css('display', 'block');
    });

    $('#dropbtn').mouseleave(function() {
        dropdownTimeout = setTimeout(function(){$('.dropdown-content').css('display', 'none');}, 3000);
    });
});

关于javascript - 使某些 JS 代码比另一个更重要(鼠标移开时消失),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58477510/

相关文章:

javascript - 如何从动态生成的 <option> <select> Express ejs 中获取值

javascript - 添加过渡到 jQuery 样式更改

html - 查看某个容器所有使用的css

css - 无法从外部样式表设置 TD 元素的样式

javascript - js如何显示隐藏组件

javascript - 未在实例上定义但在渲染期间引用的属性或方法 I Vuex

javascript - 使用 google drive api 存储应用数据

jQuery:排列到屏幕顶部时 scrollTop 和 Offset.top 的高度差?

Jquery,浏览器刷新时窗口自动向下滚动

html - CSS 居中方法之间的区别。哪个更好?