今天是10月25号,程序员节后的第一天,咱们如今了还在改BUG,妈蛋。今天碰见一个很无语的问题,就是在页面上获取offset()和position()的top属性时,发现不是本身想要的,很无语。。。程序员
原本页面是用锚点定位的,后来发如今IE11下很差用(万恶的IE。。。)。因而就采用scrollTop解决。一开始思路很好:获取目标元素的position().top,设置父元素滚动条scrollTop这么高,问题就行了。可是实际上有问题,估计跟页面布局有关系。两次获取元素的position().top还不同,我是没办法了。布局
最后,忽然灵光一闪,想到能够把目标元素以前全部元素的高度,在相加求和,就是父元素scrollTop的值。按照这样思路试了试,果真能够。代码以下:this
$(".testcard div a").on("click", function() { $(".testcard div a").removeClass("card-com"); $(this).addClass("card-com"); var index = $(this).parents(".testcard").attr("tabIndex"); index = index-1; $(".tab-option input").eq(index).trigger("click"); var prevEleHeightSum = 0; var prevEleList = $($(this).attr("ref")).prevAll(); if(prevEleList.length > 0){ $.each(prevEleList,function(index,obj){ prevEleHeightSum += $(obj).**outerHeight**(true); }); } $(".question-option:visible").scrollTop(prevEleHeightSum); return false; });
prevEleList 就是目标元素的前面同级全部元素(同级的) outerHeight(true);获取元素的高度,包括边框、padding什么的; scrollTop( );设置滚动高度位置; 最后的return false;是由于那个a标签,为了在ie中兼容。code