【问题标题】:Jquery menu onmouseenter and mouseleave strange behaviorJquery 菜单 onmouseenter 和 mouseleave 奇怪的行为
【发布时间】:2013-01-04 14:18:30
【问题描述】:

这是我的 js 菜单,在悬停时隐藏/显示菜单项... 我有这样的菜单:

    <ul class="main">
        <li class="acro_jq_menu">
            <a href="" title="How to">How to one </a>
            <ul>
                <li>item21</li>
                <li>ite222m1</li>
                <li>item1</li>
            </ul>
        </li>
        <li class="acro_jq_menu">
            <a href="" title="How to">How to Two </a>
            <ul>
                <li>item1</li>
                <li>it2em1</li>
                <li>it41em1</li>
            </ul>
        </li>
   </ul>

这是javascript:

function slideMenu()  {
 var items = $('.main li.acro_jq_menu');
        items.bind({
            mouseenter: function(e) {
                $(this).find('>ul').css({
                    'opacity':0
                }).show().animate(

                {
                    'opacity':1
                },
                500);
            },
            mouseleave: function(e) {
                $(this).find('>ul').fadeOut(100, function() {
                    $(this).hide();
                })
            }
        });   
}

$(document).ready(function(){
        slideMenu();
    });​

一切正常,但有时当我将当前li 内容留在此列表项中时,隐藏时间过长(超过 2 秒左右),有时内容根本不显示。我认为 jquery 代码有问题,但我无法弄清楚。

这里是我的代码的 JSfiddle 示例的链接:link

【问题讨论】:

  • 这里是一个示例网站,说明我的菜单的外观和行为方式 homebuilding.co.uk ,主手册
  • 我无法重现任何奇怪的行为。 (使用 Firefox 和 Chrome)

标签: jquery hover


【解决方案1】:

尝试停止事件的所有动画:

http://jsfiddle.net/6hZuV/4/

function slideMenu()  {
 var items = $('.main li.acro_jq_menu');
        items.bind({
            mouseenter: function(e) {
                $(this).stop(true, true).find('>ul').css({
                    'opacity':0
                }).show().animate(

                {
                    'opacity':1
                },
                500);
            },
            mouseleave: function(e) {
                $(this).stop(true, true).find('>ul').fadeOut(100, function() {
                    $(this).hide();
                })
            }
        });   
}

【讨论】:

  • 嘿,是的,动画停止了,这就像我在 chrome 和 firefox 中看到的那样,很棒:/
  • 回答到一半时:jsfiddle.net/6hZuV/11 只是一种稍微不同的方式来做你想做的事,并且总是意味着动画在输入或离开时从头开始
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-02-23
  • 2012-02-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多