一直以為offset是子元素相對於父元素的距離,后來用了才知道是一個坑,只存在於定位元素中
在做li的搜索的定位的時候,為了得到li相對於ul的距離,本來也可以用li的高度相乘,但是用了offsetTop,可是用上后發現得到的值怎么都不對,最后在控制台找到他的offsetParent竟然不是ul,跑到了另外一個元素上面,
原因,offsetTop是找到元素相對於父級定位元素的距離,
解決辦法:在ul上面加上定位position:relative就ok了
正常
代碼:
var selectedCodes=mes.attr("value");//需要定位選中li的code if(!!selectedCodes){ $('#'+treeIds).selectNodes(selectedCodes); //自動移動到第一個選中項 setTimeout(function(){ console.log(selectedCodes); //獲得li的offsetTop var ntop=$('#'+treeIds).find("li[value="+selectedCodes+"]")[0].offsetTop; //設置ul的scrollTop $('#'+treeIds).parent()[0].scrollTop=ntop },300); }