【问题标题】:hover menu jquery slide up and down too fast悬停菜单jquery上下滑动太快
【发布时间】:2014-10-12 20:39:08
【问题描述】:

我做了这个悬停菜单但是有问题 这是我的 jquery 代码

  $("#right_side li").mouseenter(function(e) {

        $(this).children('ul').stop(true,true).slideDown();

    });
    $(this).stop();
    $("#right_side li").mouseleave(function(e) {
        $(this).children('ul').stop(true,true).slideUp();

    });

这是我的 php 代码

function menu($li)
{
   echo "<ul class='hovermenu'>";
        $result = mysqli_query($li, "SELECT * FROM `categories` WHERE 1") or die(mysqli_error($li));

    while ($Row = mysqli_fetch_array($result)) {
        echo "<li class='cat'><div class='cat_div' ><a href='index.php?cat=".$Row['catid']."'>"  . $Row['catname'] . "</a></div><ul class='sub'>";
                                $result2 = mysqli_query($li, "SELECT * FROM `brand` WHERE catid=".$Row['catid']."") or die(mysqli_error($li));
                    while ($Row2 = mysqli_fetch_array($result2)) {
                    echo "<li><a href='index.php?brand=".$Row2['id']."&cat=".$Row['catid']."'>"  . $Row2['name'] . "</a></li>";
                                        }
                echo"</ul></li>";
                }

echo "</ul>";
}

我的问题是 当我的鼠标离开 我鼠标速度太快了 我的菜单上下滑动太快了 请帮助meeeee!!!

【问题讨论】:

  • 添加slideUpslideDown时间,像这样,.slideUp(500).slideDown(500)
  • 我的问题不在于计时我的问题是当我离开并再次悬停太快时,当我的滑动没有完成但我的 sub ul 上下移动太快
  • @Davion 默认情况下,slideUp 和 SlideDown 以 400 毫秒执行,因此将其添加到 500 没有区别。 alirezavalipour 你能用小提琴重现这个问题吗?你的问题是当你用鼠标在菜单上多次通过时,菜单会上下执行多次吗?
  • 没有固定的多次使用 stop()
  • @alirezavalipour 你能给我们看看html吗?不是php代码

标签: javascript php jquery html css


【解决方案1】:

将速度添加到您的 slideUp 调用中,例如“慢”

slideUp("slow")

您也可以使用以毫秒为单位的值。

【讨论】:

  • 我知道时间,但我的问题是别的
  • 您的代码不包含它。添加慢速会减慢您的滑动速度 - 这是您要求的,对吧?
  • 创建一个 jsfiddle 或 codepen 来演示问题 - 当我们看不到它时,很难准确地判断发生了什么。
  • 它很简单,只是认为我的鼠标在第一个 ul 上,我将 ul 留给身体并在我的 slideUp 动画工作之前返回,所以问题从这里开始,我的子 ul 隐藏和显示太快大约 60HZ: ))
【解决方案2】:

您可以简单地添加一个以毫秒为单位的时间,例如 slideUp(1000) 或 slideDown(300) 或 slideDown("fast") 或 slideUp("slow") 希望这会有所帮助。

【讨论】:

    【解决方案3】:

    你能把你的脚本改成这个,如果问题解决了,请告诉我

    $("#right_side li").on({
        mouseenter: function(){
            $(this).children('ul').stop().slideDown();
        },
        mouseleave: function(){
            $(this).children('ul').stop().slideUp();
        }
    });
    

    【讨论】:

    【解决方案4】:

    当向上/向下滑动的元素没有设置高度时,jQuery slideUp/slideDown 函数存在一个已知问题。确保要隐藏的元素具有指定的高度。

    另外,最小高度 css 属性会搞砸。从元素中移除 min-height。

    参考:

    https://forum.jquery.com/topic/slideup-slow-and-slidedown-slow-happening-instantly

    【讨论】:

    • 在我花了一个小时试图弄清楚之后,这解决了我的问题。不知道为什么有人对此投了反对票...
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-05-23
    • 2012-02-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多