问答详情
源自:7-1 结语

这个语法,用jquery-3.2.1写报错求解: menu.find("[href="+currentId+"]").addClass("current");

<!DOCTYPE html>

<html>


<head>

<meta charset="utf-8" />

<title>菜狗购物网</title>

<!--

        作者:306607265@qq.com

        时间:2017-07-18

        描述:

        <script type="text/javascript">

//获取classname的封装函数

function getClass(par,cls){

var gro=par.getElementsByTagName("*");

var result=[];

for (i=0;i<gro.length;i++){

if(gro[i].className==cls){

result.push(gro[i]);

}

}

return result;

}

function hascls(obj,cls){

return  obj.className.match(new RegExp("(\\s|^)"+cls+"(\\s|$)"));

}

function removeclass(obj,cls){

if(hascls(obj,cls)){

var reg=new RegExp("(\\s|^)"+cls+"(\\s|$)")

obj.className=obj.className.replace(reg,"");

}

}

function addclass(obj,cls){

if(!hascls(obj,cls)){

obj.className+=""+cls;

}

}

window.onload=function(){

window.onscroll=function(){

var top= document.documentElement.scrollTop || document.body.scrollTop

console.log(top);

var menus=document.getElementById("menu").getElementsByTagName("a");

var items=getClass(document.getElementById("content"),"item");

var currentid="";

for(i=0;i<items.length;i++){

if(top>items[i].offsetTop-200){

currentid=items[i].id;

}else

break;

}

if(currentid){

for(j=0;j<menus.length;j++){

var _href=menus[j].href.split('#');

if(_href[_href.length-1]==currentid){

addclass(menus[j],"current");

}else{

addclass(menus[j],"current");

removeclass(menus[j],"current");

}

}

}

}

}

</script>-->

<script type="text/javascript" src="js/jquery-3.2.1.js" ></script>

<script type="text/javascript">

$(document).ready(function(){

$(window).scroll(function(){

var items=$("#content").find(".item");

var menu=$("#menu");

var currentid="";

var top=$(document).scrollTop();

items.each(function(){

if (top > $(this).offset().top - 300) {

                        currentId = "#" + $(this).attr("id");

                        $(".current").removeClass("current");

                        menu.find("[href="+currentId+"]").addClass("current");

                    } else {

                        return false;

                    }

});

});

});

</script>

<style>

* {

            margin: 0;

            padding: 0;

        }


        body {

            font-size: 12px;

            line-height: 1.7;

        }


        li {

            list-style: none;

        }


        #content {

            width: 800px;

            margin: 0 auto;

            padding: 20px;

        }


        #content h1 {

            color: #0088bb;

        }


        #content .item {

            padding: 20px;

            margin-bottom: 20px;

            border: 1px dotted #0088bb;

        }


        #content .item h2 {

            font-size: 16px;

            font-weight: bold;

            border-bottom: 2px solid #0088bb;

            margin-bottom: 10px;

        }


        #content .item li {

            display: inline;

            margin-right: 10px;

        }


        #content .item li a img {

            width: 230px;

            height: 230px;

            border: none;

        }


        #menu {

            position: fixed;

            top: 100px;

            left: 50%;

            margin-left: 400px;

            width: 50px;

        }


        #menu ul li a {

            display: block;

            margin: 5px 0;

            font-size: 14px;

            font-weight: bold;

            color: #333;

            width: 80px;

            height: 50px;

            line-height: 50px;

            text-decoration: none;

            text-align: center;

        }


        #menu ul li a:hover,

        #menu ul li a.current {

            color: #fff;

            background: #0088bb;

        }

</style>

</head>


<body>

<div id="menu">

<ul >

<li><a href="#item1">1F 男装</a></li>

<li><a href="#item2">2F 女装</a></li>

<li><a href="#item3">3F 美妆</a></li>

<li><a href="#item4">4F 数码</a></li>

<li><a href="#item5">5F 母婴</a></li>

</ul>

</div>

<div id="content">

<h1>菜狗购物网</h1>

<div id="item1" class="item">

<h2>1F 男装</h2>

<ul>

<li>

<a href="#"><img src="img/1F.jpg" /></a>

</li>

<li>

<a href="#"><img src="img/1F.jpg" /></a>

</li>

<li>

<a href="#"><img src="img/1F.jpg" /></a>

</li>

<li>

<a href="#"><img src="img/1F.jpg" /></a>

</li>

<li>

<a href="#"><img src="img/1F.jpg" /></a>

</li>

<li>

<a href="#"><img src="img/1F.jpg" /></a>

</li>

<li>

<a href="#"><img src="img/1F.jpg" /></a>

</li>

<li>

<a href="#"><img src="img/1F.jpg" /></a>

</li>

<li>

<a href="#"><img src="img/1F.jpg" /></a>

</li>

</div>

<div id="item2" class="item">

<h2>2F 女装</h2>

<ul>

<li>

<a href="#"><img src="img/1F.jpg" /></a>

</li>

<li>

<a href="#"><img src="img/1F.jpg" /></a>

</li>

<li>

<a href="#"><img src="img/2F.jpg" /></a>

</li>

<li>

<a href="#"><img src="img/2F.jpg" /></a>

</li>

<li>

<a href="#"><img src="img/2F.jpg" /></a>

</li>

<li>

<a href="#"><img src="img/2F.jpg" /></a>

</li>

<li>

<a href="#"><img src="img/2F.jpg" /></a>

</li>

<li>

<a href="#"><img src="img/2F.jpg" /></a>

</li>

<li>

<a href="#"><img src="img/2F.jpg" /></a>

</li>

</div>

<div id="item3" class="item">

<h2>3F 美妆</h2>

<ul>

<li>

<a href="#"><img src="img/3F.jpg" /></a>

</li>

<li>

<a href="#"><img src="img/3F.jpg" /></a>

</li>

<li>

<a href="#"><img src="img/3F.jpg" /></a>

</li>

<li>

<a href="#"><img src="img/3F.jpg" /></a>

</li>

<li>

<a href="#"><img src="img/3F.jpg" /></a>

</li>

<li>

<a href="#"><img src="img/3F.jpg" /></a>

</li>

<li>

<a href="#"><img src="img/3F.jpg" /></a>

</li>

<li>

<a href="#"><img src="img/3F.jpg" /></a>

</li>

<li>

<a href="#"><img src="img/3F.jpg" /></a>

</li>

</div>

<div id="item4" class="item">

<h2>4F 数码</h2>

<ul>

<li>

<a href="#"><img src="img/4F.png" /></a>

</li>

<li>

<a href="#"><img src="img/4F.png" /></a>

</li>

<li>

<a href="#"><img src="img/4F.png" /></a>

</li>

<li>

<a href="#"><img src="img/4F.png" /></a>

</li>

<li>

<a href="#"><img src="img/4F.png" /></a>

</li>

<li>

<a href="#"><img src="img/4F.png" /></a>

</li>

<li>

<a href="#"><img src="img/4F.png" /></a>

</li>

<li>

<a href="#"><img src="img/4F.png" /></a>

</li>

<li>

<a href="#"><img src="img/4F.png" /></a>

</li>

</div>

<div id="item5" class="item">

<h2>5F 母婴</h2>

<ul>

<li>

<a href="#"><img src="img/5F.jpg" /></a>

</li>

<li>

<a href="#"><img src="img/5F.jpg" /></a>

</li>

<li>

<a href="#"><img src="img/5F.jpg" /></a>

</li>

<li>

<a href="#"><img src="img/5F.jpg" /></a>

</li>

<li>

<a href="#"><img src="img/5F.jpg" /></a>

</li>

<li>

<a href="#"><img src="img/5F.jpg" /></a>

</li>

<li>

<a href="#"><img src="img/5F.jpg" /></a>

</li>

<li>

<a href="#"><img src="img/5F.jpg" /></a>

</li>

<li>

<a href="#"><img src="img/5F.jpg" /></a>

</li>

</div>

</div>

</body>


</html>


提问者:simon_wyk 2017-07-18 12:10

个回答

  • 慕粉0905313057
    2019-01-16 14:35:57

    其实在jQuery1.8以后.size()合并成了length属性

  • 套子里的海怪
    2017-08-02 10:21:55

    var currentid=""; 这里定义的是小写的i,后面字符串链接的时候写的是大写I

  • 白小九
    2017-07-28 20:53:23

    menu.find("[href="+currentId+"]")这里需要加上单引号:

    menu.find("[href='"+currentId+"']")

  • lilng
    2017-07-19 16:30:41

    [href="+currentId+"] 是筛选条件,而find查找的是dom节点,你在前面加一个li就可以了。

    即 li[href="+currentId+"]