var currentLink = menu.find(".current");
if (currentId && currentLink.attr("href") != currentId) {
currentLink.removeClass("current");
menu.find("[href=" + currentId + "]").addClass("current");
}
其实你完全可以去掉if那个条件也可以成立,你去掉那个if添加只剩下三行代码后你会发现。这里要做的只是两步:第一、先把全部a元素的样式去掉,第二、对匹配的那个a元素加上样式。如果不先去掉,你在浏览器中会发现a元素全都显示样式,而不知道到底那个a被选中
if (currentId && currentLink.attr("href") != currentId) {}
currentId等价于currentId!="",意思就是说当current有值时执行下面代码
&& currentLink.attr("href") != currentId //并且选中楼层的a标签的href不等于滚动条所在楼层的id执行下面代码,因为相同话,就不需要执行下面的代码了,节约性能
解决问题,请采纳
左侧有5个div
情况:左侧div显示出第二个div的时候
需要去掉右侧导航栏第一个li标签上的current类,给第二个li标签加上该类
这个时候currentid不为空,并且 currentLink.attr("href") != currentId
但若是左侧的div显示的始终是第一个div,就不需要让右侧导航栏的样式发生改变
这个时候currentid是空,并且 currentLink.attr("href") == currentId
var currentLink = menu.find(".current");在menu里面找到已经设置了默认样式的元素。假设这个元素为A
if (currentId && currentLink.attr("href") != currentId)判断currentId的值是否改变和A元素的href值与当前项目的ID值是否一致,不是的话说明当前项目与默认样式的元素不匹配,就移除默认样式,
menu.find("[href=" + currentId + "]").addClass("current");找到与menu中href值与当前项目的ID一致的元素,并为其添加默认样式。
(可能不完全正确,理解为主哦)用currentId表示当前包含img的div并把初始赋值为空,如果这个div进入了适当的显示区域,就把 选择符“#”+当前div的id名 赋值给它。 currentLink是初始类名为current的a(也就是第一个),如果currentId不为空且进入了适当的显示区域的这个div对应的不是已经有类名current的a的话,就把这个a的current类删除,并查找所有a中href为currentId的a,再把这个a添加current类名。 其实连接块和图片块就是靠链接a的href和图片div的id建立的联系呀