關於offsetTop的誤解


一直以為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);
}

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM