jquery offset()獲取隱藏元素座標值始終為0
阿新 • • 發佈:2018-12-27
這是之前網站上發過一篇文章,關於jquery offset()獲取隱藏元素座標值的問題,這裡要特別強調的是:
jquery offset()、position()方法 以及原生js offsetTop屬性、 getBoundingClientRect()方法都無法獲取隱藏元素的座標相關值,表現為獲取值始終為0。
網上基本都有說到這個問題,但卻沒給出很好的解決方法,可能有人會想到用visibility: hidden; 去代替 display:none的方法,即達到隱藏元素效果,又能獲取到元素的座標值的目的。但問題是被visibility: hidden; 掉的元素本身還是佔用頁面位置,當該元素佔用面積比較大的時候這方法就是直接影響到頁面的顯示效果了!
終極解決方法:
$(obj).show();
// obj進行offset()相關的操作
var temp=$(obj).offset().top;
alert(temp);
$(obj).hide();
標紅的就是關鍵:在要對obj 物件進行offset()操作前先把該元素顯示出來,以便能獲取offset()值,操作完後,再隱藏掉就好了,無副作用!