最好把html部份也发过来 单是java部份我是没有看出来有什么问题
var items = $('.content').find('div');
你的每个content后面加了数字,换成class="content"就可以了
当currentId 为真时,就是currentId ==#item1.2..3...,并且 currentLink.attr("href")!=currentId: currentLink.attr("href")返回带有.current类的A标签的href属性值;如果A标签的href属性值没有#item1.2..3...为真
var top1 = $(document).scrollTop();
没有什么大问题,就是在判断(top > itemTop-220)的时候到达不到第三个,把220设大一点就好了。比如500
161行的代码错了,<script src=" " type="text/javascript"></script>,你的 jquery-3.2.1.js 文件要用相对路径写入src(看你文件放在哪里),例如<script src="../jquery-3.2.1.js" type="text/javascript"></script>。
currentid是当前所在楼层的ID,也就是item1 或者item2、item3……
如果是item2,menu里的href的值为item2的就添加类名current
其他的就清空,currentid是根据当前所在楼层变化的,不是固定的值
3.1版本严格要求了字符串的格式,改成 find("[href='"+currentId+"']") 就行了
如果是基于浏览器操作的比如滚动条,就要用$window;如果是针对页面结构的(比如这里面的所有html结构加载完)就要用$document.$this这里指的是元素对象的,其实就是代指而已。不知道我说的是否明白
a标签的href都指给定了一个#id,这里就找a标签链接中给定的id与currenId相同的那一个a,然后给这个a一个class,这个a的样式就随之改变了
我找到问题了,引用的jq文件不对。。。。。。。
变量和字符串的拼接要用+号 否则会出现错误
不填true/fasle/null/undefined等,默认为true
第一、二行:
<script src="http://libs.baidu.com/jquery/1.10.2/jquery.min.js"></script>
<script>
最后第7行:if(currentId && currentLink.attr("href") != currentId){
然而我知道啊这个写法啊。。。。。我关心为什么这么写。。。
menu.find("[href="+currentId+"]") 前边两个引号"[href="是一对,后边两个"]"是一对
//menu.find("[href='#item3']").addClass("current");
正常的格式是这样
menu.find("[href=" + currentId + "]").addClass("current");
var menu=$("#menu");
因为老师之前已经这样定义了
这是一个JQuery的属性选择器的写法格式,这个题目属于下面的第二类
$("[href]") 选取所有带有 href 属性的元素。
$("[href='#']") 选取所有带有 href 值等于 "#" 的元素。
$("[href!='#']") 选取所有带有 href 值不等于 "#" 的元素。
$("[href$='.jpg']") 选取所有 href 值以 ".jpg" 结尾的元素。
因为你的 <div id="item1" class="item">写错了 item1写成了iteml
不知道是不是jquery版本的问题,老师演示是正确的,但是新版的库有问题。menu.find("[href="+currentId + "]")此处中变量为字符串拼接时,应当为menu.find("[href='"+currentId+"']" ),"+currentId+"为变量拼接,单引号将变量转换为字符串。
为什么为什么
<script src="http://libs.baidu.com/jquery/1.10.2/jquery.min.js"></script>
<script>
$(document).ready(function(){
//滚动条发生滚动
$(window).scroll(function(){
var top=$(document).scrollTop();
var menu=$("#menu");
var items=$("#contant").find(".item");
var currentId="";//当前所在的楼层
items.each(function(){
var m=$(this);
var itemTop=m.offset().top;
if(top>itemTop-200){
currentId="#" + m.attr("id");
}else{
return false;
}
});
//给相应楼层的a设置current,取消其他连接的current
var currentLink = menu.find(".current");
if(currentId && currentLink.attr("href") != currentId){
currentLink.removeClass("current");
menu.find("[href="+ currentId +"]").addClass("current");
}
});
});
</script>
menu.find("[href="+currentId+"]").addClass('current');
"[href="+currentId+" 中 ""双引号会识别这句语句中的特殊字符;(href,变量currentId等);
‘[href="+currentId+’ ' '单引号不会识别特殊字符;会将该语句识别为字符串;
嗯嗯,是我之前定义的时候写错了,最后找到了