Jquery的offset()和position()高度計算不正確解決辦法

Jquery的offset()和position()高度計算不正確解決辦法

今天是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

相關文章
相關標籤/搜索