为了账号安全,请及时绑定邮箱和手机立即绑定

jQuery好像有BUG啊

代码如下,我发现快速在各个导航栏中移动会出现动画重叠的现象。要怎么才能解决呢?求大神指教.

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>JS左右伸缩菜单</title>
<style>
*{
    font-family: "Microsoft Yahei";
    font-size: 16px;
    margin: 0;
    padding: 0;
}
ul{
    list-style-type: none;
    height: 50px;
    border-bottom: 5px solid #f60;
    padding-left:20px;
}
li{
    float: left;
    margin-top:20px;
}
a{
    display: block;
    text-decoration: none;
    width: 120px;
    background-color: #ccc;
    margin-right: 1px;
    text-align: center;
    height: 30px;
    line-height: 30px;
    color:#233;
}
.selecte_a,a:hover{
    background-color: #f60;
    color:white;
    font-size: 17px;
}
</style>
<script src="http://libs.baidu.com/jquery/1.9.0/jquery.js" type="text/javascript"></script>
<script>
    $(function(){
        $("a").each(function(index){
            $(this).hover(function(){
                $(this).animate({
                    width: "+=30px"
                },300)
            },function () {
                  $(this).animate({
                    width: "-=30px"
                },300)
            })
        })
    })    
</script>

</head>
<body>
    <ul>
        <li><a href="#" class="selecte_a">首    页</a></li>
        <li><a href="#">新闻快讯</a></li>
        <li><a href="#">产品展示</a></li>
        <li><a href="#">售后服务</a></li>
        <li><a href="#">联系我们</a></li>
    </ul>
</body>
</html>


正在回答

2 回答

stop()方法还提供了两个参数,clearQueue和gotoEnd,都是boolean值,因为会出现多次点击和移除光标事件,故需要用参数来解决,代码改正如下:

    $(function(){

        $("a").each(function(index){

            $(this).hover(function(){

                $(this).stop(true,true).animate({

                    width: "+=30px"

                },300)

            },function () {

                  $(this).stop(true,true).animate({

                    width: "-=30px"

                },300)

            })

        })

    })  

stop(true,true)表示停止动画并直接到达当前动画的末状态,并且清空动画队列(不会出现累积动画)。不知道我将明白了吗?

0 回复 有任何疑惑可以回复我~
#1

卡迪亚兹 提问者

先谢谢了。。。我之前有一天倒腾的时候。。。看一个大神的文章的时候正好有讲到。。然后就搞定了。。
2016-04-05 回复 有任何疑惑可以回复我~

在启用动画之前清除之前的动画试试

 $(this).hover(function(){

                $(this).stop().animate({

                    width: "+=30px"

                },300)

            }


0 回复 有任何疑惑可以回复我~
#1

卡迪亚兹 提问者

我试过了咯,还是不行。。
2016-03-07 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
导航条菜单的制作
  • 参与学习       123899    人
  • 解答问题       813    个

水平、垂直、圆角导航条菜单,让您的技术探索之路更高效

进入课程

jQuery好像有BUG啊

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信