jQuery 悬停动画多次触发

标签 jquery fadein fadeout jquery-hover

我试图找出为什么我的悬停功能表现得很奇怪。当您将鼠标悬停在一个 div 上时,另一个 div 将变得可见。但是,当我将光标向下移动到可见的 div 时,它会淡出并再次淡入。这种情况不应该发生,并且应该保持可见,直到我的光标离开主容器。

这是我的代码。

HTML

<div id="searchWrapper" class="fleft">
    <div class="box">Hover here!</div>
    <div class="searchLinks" style="display: none;">
        <form id="search_mini_form" action="" method="get">
            <div class="form-search">
                <label for="search">Search:</label>
                <input id="search" type="text" name="q" value="" class="input-text" maxlength="128" autocomplete="off">
                <button type="submit" title="Search" class="button"><span><span>Search</span></span></button>
                <div id="search_autocomplete" class="search-autocomplete" style="display: none;"></div>
                <script type="text/javascript">
                    //<![CDATA[
                    var searchForm = new Varien.searchForm('search_mini_form', 'search', '');
                    searchForm.initAutocomplete('http://removed.com/index.php/catalogsearch/ajax/suggest/', 'search_autocomplete');
                    //]]>
                </script>
            </div>
        </form>
    </div>
</div>

jQuery

<script type="text/javascript">
    jQuery(function($) {

        $("#searchWrapper").hover(
            function () {
                $(".searchLinks").fadeIn( 500 );
            },
            function () {
                $(".searchLinks").fadeOut( 500 );
            }
        );

    });
</script>

CSS

#searchWrapper {
    position:relative;
}

#searchWrapper .searchLinks {
    position: absolute;
    z-index: 99999;
    top: 50px;
    background: #e7e7e7;
    right: -145px;
    display:none;
    padding:10px;
}

#searchWrapper .box {
    border:solid 1px #555;
    padding: 20px 0px;
    text-align:center;
}

您可以在此处看到当您将鼠标悬停在其上方时它如何淡入、淡出并重新出现。

http://jsfiddle.net/421g2cdh/7/

最佳答案

您必须使用stop()函数。

jQuery(function($) {

    $("#searchWrapper").hover(
        function () {
            $(".searchLinks").stop(true,true).fadeIn( 500 );
        },
        function () {
            $(".searchLinks").stop(true,true).fadeOut( 500 );
        }
    );

});

此外,如果您不想在鼠标位于 .searchLinks 与其父级之间时看到它淡出,请减少 .searchLinks 的边距。 (填充顶部而不是顶部)

(参见 http://jsfiddle.net/421g2cdh/11/ )

关于jQuery 悬停动画多次触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26427021/

相关文章:

jquery - 禁用单击每行中的最后一列

javascript - 无法自定义 "Copy To ClipBoard"按钮

jQuery:当滚动超过某个点时,fadeIn 固定导航

ios - 淡入动画无法快速工作2

jquery - 试图让一些 div 淡出然后被删除

javascript - 如何迭代多个选择并根据数据库中的值设置选项?

javascript - 尝试为导航菜单的 Jquery 下拉列表添加延迟

javascript - 当我在页面加载时创建容器/父 Div .fadeIn 时,jQuery(和所有#links)中断 - 为什么?

jquery - 同时淡出两行文本

jquery - 开始后取消/停止 jquery fadeOut