简体   繁体   English

为什么jQuery悬停效果不起作用?

[英]Why jQuery hover effect not working?

What I need is a smooth hover effect for my dropdown menu. 我需要的是下拉菜单的平滑悬停效果。

$(this).find(".dropdown-menu").stop(true, true).delay(200).fadeOut(500); is not working for me. 对我不起作用。 When the mouse out hover, the effect isn't working. 当鼠标悬停时,效果不起作用。

$(document).ready(function () {
    // executes when HTML-Document is loaded and DOM is ready

    // breakpoint and up  
    $(window).resize(function () {
        if ($(window).width() >= 980) {
            // when you hover a toggle show its dropdown menu
            $(".navbar .dropdown-toggle").hover(function () {
                $(this).parent().toggleClass("show");
                $(this).parent().find(".dropdown-menu").toggleClass("show");
                $(this).find(".dropdown-menu").stop(true, true).delay(200).fadeOut(500);
            });

            // hide the menu when the mouse leaves the dropdown
            $(".navbar .dropdown-menu").mouseleave(function () {
                $(this).removeClass("show");
            });
            // do something here
        }
    });
    // document ready  
    //wow.js init
    new WOW().init();
});

Here is my HTML markup. 这是我的HTML标记。 I am using bootstrap 4 latest version. 我正在使用bootstrap 4最新版本。 what can I do with a smooth hover effect with jQuery or javascript 我如何使用jQuery或javascript进行平滑的悬停效果

<header class="header_area">
    <nav class="navbar navbar-expand-lg navbar-light fixed-top">
        <a class="navbar-brand" href="#">Light House</a>
        <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
                <span class="navbar-toggler-icon"></span>
              </button>

        <div class="collapse navbar-collapse" id="navbarSupportedContent">
            <ul class="navbar-nav mr-auto">
                <li class="nav-item active">
                    <a class="nav-link" href="index.html">Home <span class="sr-only">(current)</span></a>
                </li>
                <li class="nav-item">
                    <a class="nav-link" href="about.html">About</a>
                </li>
                <li class="nav-item">
                    <a class="nav-link" href="single.html">Single Post</a>
                </li>
                <li class="nav-item dropdown">
                    <a class="nav-link dropdown-toggle" href="#" id="navbarDropdownMenuLink" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
                      Pages
                    </a>
                    <div class="dropdown-menu animated fadeIn" aria-labelledby="navbarDropdownMenuLink">
                        <a class="dropdown-item" href="#">Item 1</a>
                        <a class="dropdown-item" href="#">Item 2</a>
                        <a class="dropdown-item" href="#">Item 3</a>
                        <a class="dropdown-item" href="#">Item 4</a>
                        <a class="dropdown-item" href="#">Item 5</a>
                    </div>
                </li>
                <li class="nav-item dropdown">
                    <a class="nav-link dropdown-toggle" href="#" id="navbarDropdownMenuLink" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
                      Pages
                    </a>
                    <div class="dropdown-menu animated fadeIn" aria-labelledby="navbarDropdownMenuLink">
                        <a class="dropdown-item" href="#">Item 1</a>
                        <a class="dropdown-item" href="#">Item 2</a>
                        <a class="dropdown-item" href="#">Item 3</a>
                    </div>
                </li>
                <li class="nav-item">
                    <a class="nav-link" href="contact_us.html">Contact Us</a>
                </li>
            </ul>
            <form class="form-inline my-2 my-lg-0">
                <input class="form-control mr-sm-2" type="search" placeholder="Search" aria-label="Search">
                <button class="btn btn-outline-success my-2 my-sm-0 search_icon" type="submit"><i class="fa fa-search"></i></button>
            </form>
        </div>
    </nav>
</header>

.hover() has two handlers. .hover()有两个处理程序。 The mouse IN and the mouse OUT. 鼠标IN和鼠标OUT。

If you wish to define something to happen on mouse out, you have to define the handler. 如果希望定义鼠标移出时发生的事情,则必须定义处理程序。

element.hover(mouseenter, mouseleave);

Documentation 文献资料

So I suggest: 所以我建议:

$(".navbar .dropdown-toggle").hover(

  // Mouseenter event handler
  function () {
    $(this).parent().toggleClass("show");
    $(this).parent().find(".dropdown-menu").toggleClass("show");
  },

  // Mouseleave event handler
  function(){
    $(this).find(".dropdown-menu").stop(true, true).delay(200).fadeOut(500);
  }
);

If you wish to use .hover() , this can be done like so: 如果您希望使用.hover() ,可以这样进行:

$(".navbar .navbar-toggler").hover(function(e) {
  $(".navbar .navbar-collapse").addClass("show").fadeIn(500);
}, function(e) {
  $(".navbar .navbar-collapse").removeClass("show").fadeOut(500);
});

This has drawbacks as as soon as you move the mouse to click or select one of the Menu items, it will revert the class and become hidden. 一旦您移动鼠标单击或选择其中一个菜单项,这将具有缺点,它将还原该类并变为隐藏状态。

I would advise staying with .click() for all cases. 我建议在所有情况下都使用.click() This will work for Mobile and Desktop browsers: 这将适用于移动和桌面浏览器:

$(".navbar .navbar-toggler").click(function() {
  $(".navbar .navbar-collapse").toggleClass("collapse show");
});

Working Example: https://jsfiddle.net/4gas2aok/4/ 工作示例: https : //jsfiddle.net/4gas2aok/4/

If you want to retain the fade, use .fadeToggle() : 如果要保留淡入淡出,请使用.fadeToggle()

$(".navbar .navbar-toggler").click(function() {
  $dropdown.fadeToggle(500).toggleClass("collapse show");
});

Bootstrap CSS addresses a lot of the width issues already, so you should not need to check the Window width, just let bootstrap handle it on it's own. Bootstrap CSS已经解决了很多宽度问题,因此您无需检查Window宽度,只需让Bootstrap自行处理即可。

Full Example: https://jsfiddle.net/4gas2aok/7/ 完整示例: https//jsfiddle.net/4gas2aok/7/

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM