javascript - 为什么设置了鼠标滚轮事件后,点击的时候会跳到顶部呢?
迷茫
迷茫 2017-04-11 11:02:39
[JavaScript讨论组]

请教一个问题,如下代码,想做一个效果,让导航栏一直固定在顶部,判断鼠标如果往下滑动的话,就出现background,如果当前页面是是在顶部,就让background消失。我用下面这段代码可以实现,但是点击导航栏的子元素button的时候,不管当时是滑动到哪里,都会跳到顶部,是为什么呢?

<!DOCTYPE html>
<html>
<head>
    <meta charset = "utf-8" />
    <title>test</title>
    <style type="text/css">
        body{
            height: 2000px;
        }
        .p1{
            width: 500px;
            height: 80px;
            position: fixed;
            top: 0;
        }
        li{
            list-style: none;
            width: 50px;
            height: 50px;
            background: #000;
            color: #fff;
            margin-left: 10px;
            float: left;
            text-align: center;
            line-height: 40px;
        }
        .click{
            color: #fff;
            line-height: 40px;
        }
    </style>
    <script type="text/javascript" src="jquery.min.js"></script>
    <script type="text/javascript">
        $(function(){
            $(window).bind("scroll",function(){  //鼠标滚轮事件
                var top = $(this).scrollTop();  //当前窗口滚动距离
                if(top == 0){
                    $(".p1").css("background","none");
                }else{
                    var scrollFunc = function(e){    
                    var direct = 0;
                    e = e || window.event;
                    if(e.wheelDelta){           
                        if (e.wheelDelta < 0) {  
                            $(".p1").css("background","#ccc");
                        }; 
                    }else if(e.detail){   
                        if(e.detail < 0){  
                            $(".p1").css("background","#ccc");
                        };
                    };
                    ScrollText(direct);
                    };
                    //给页面绑定滑轮事件
                    if (document.addEventListener) {
                        document.addEventListener('DOMMouseScroll',scrollFunc,false);
                    };
                    //滚动滑轮事件触发scrollFunc函数
                    window.onmousewheel = document.onmousewheel = scrollFunc;
                    }
                })
        });
    </script>
</head>
<body>
    <p class="p1">
        <ul>
            <li>1</li>
            <li>2</li>
            <li>3</li>
            <li><a href="#" class="click">button</a></li>
        </ul>
    </p>
</body>
</html>
迷茫
迷茫

业精于勤,荒于嬉;行成于思,毁于随。

全部回复(2)
黄舟
<a href="javascript:;" class="click">button</a>

链接有默认行为,加’#‘也是跳转到本页,取消这个默认行为 改成上面代码

PHPz

<li>button</li> 。。。。。 #号本来就是进入当前页面

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号