Jquery 滚动至div时菜单ul样式更改
我有一个菜单,菜单下有ul和方框作为内容,当我滚动到第一个方框时,ul的样式更改为另一个样式,当我滚动到第二个方框时,ul的样式更改为相同的另一个样式,第一个ul样式返回到其原始样式,诸如此类。 问题是当我到达页面的末尾时,有空间,所有uls样式都应该返回到原始样式,但是jquery代码的问题是,最后一个ul样式(对于最后一个框)仍然与我在最后一个框上一样。 正如你在这里看到的,当我到达页面末尾时,菜单中的每个ul样式都应该与原始样式相同,但不是。Jquery 滚动至div时菜单ul样式更改,jquery,css,html,scroll,Jquery,Css,Html,Scroll,我有一个菜单,菜单下有ul和方框作为内容,当我滚动到第一个方框时,ul的样式更改为另一个样式,当我滚动到第二个方框时,ul的样式更改为相同的另一个样式,第一个ul样式返回到其原始样式,诸如此类。 问题是当我到达页面的末尾时,有空间,所有uls样式都应该返回到原始样式,但是jquery代码的问题是,最后一个ul样式(对于最后一个框)仍然与我在最后一个框上一样。 正如你在这里看到的,当我到达页面末尾时,菜单中的每个ul样式都应该与原始样式相同,但不是。 您也可以下载该文件。我添加了一个变量endpo
您也可以下载该文件。我添加了一个变量
endpoint
,该变量设置为最终div加上该div高度的偏移量,当页面滚动超过该值时,menutext2
类将被删除
$(function(){
var offsets = [],
menuText = $('#menu .menuText'),
endpoint;
$("div.contentDiv").each( function(i, div) {
if(i==$("div.contentDiv").length-1){endpoint=$(div).offset().top+$(div).outerHeight();}
offsets.push({ id: div.id, offset: $(div).offset().top - 60});
});
$(window).scroll(function(e) {
var start = $(this).scrollTop();
var end = $(this).scrollTop();
for ( var div = 0; div < offsets.length; div++ ) {
if ( start > offsets[div].offset ) {
menuText.removeClass('menutext2').addClass('menutext');
menuText.filter('[linkId="'+offsets[div].id+'"]').addClass('menutext2').removeClass('menutext');
}
}
if ( start === 0 || $(this).scrollTop()>endpoint) {
menuText.removeClass('menutext2').addClass('menutext');
}
});
});
$(函数(){
var偏移量=[],
menuText=$(“#menu.menuText”),
终点;
$(“div.contentDiv”)。每个(函数(i,div){
如果(i=$(“div.contentDiv”).length-1){endpoint=$(div.offset().top+$(div.outerHeight();}
push({id:div.id,offset:$(div.offset().top-60});
});
$(窗口)。滚动(功能(e){
var start=$(this.scrollTop();
var end=$(this.scrollTop();
对于(var div=0;div偏移量[div].offset){
menuText.removeClass('menutext2').addClass('menuText');
menuText.filter('[linkId=“”+offsets[div].id+'“]').addClass('menutext2').removeClass('menuText');
}
}
if(start==0 | |$(this).scrollTop()>endpoint){
menuText.removeClass('menutext2').addClass('menuText');
}
});
});