jQuery.position()方法獲取不到值的安全替換方法
調(diào)用jQuery.position()方法會返回相對于父元素的位置,jQuery官方文檔中描述說,它跟.offset()方法不一樣,.offset()返回的是相對于document的位置,而.position()返回的是相對于父元素的位置。
但事實上,在使用的過程中,我們發(fā)現(xiàn).position()返回的值經(jīng)常是0。但事實不是0。尤其是谷歌瀏覽器和IE瀏覽器里?;鸷鼮g覽器沒有此問題。
究其原因,以基于Webkit的瀏覽器(谷歌瀏覽器和Safari瀏覽器)為例,只有當(dāng)元素(圖片、flash等)完全加載后,瀏覽器才能訪問到這些元素的高度和寬度,而火狐瀏覽器是在DOM加載完成后就能訪問這些屬性,它不需要知道這個元素的完整尺寸。而谷歌瀏覽器就不行。因此在谷歌/IE這樣的瀏覽器里,如果你想使用.position()獲取元素的偏移量,往往得到值就是初始值:0。
有一種補救的方法是將你的.position()調(diào)用放到 $(window).load()事件觸發(fā)之后,而不是$(document).ready事件之后。但這種方法也未必可靠。
另外一種變通的方法是用.offset()來換算:
jQuery.fn.aPosition = function() {
thisLeft = this.offset().left;
thisTop = this.offset().top;
thisParent = this.parent();
parentLeft = thisParent.offset().left;
parentTop = thisParent.offset().top;
return {
left: thisLeft-parentLeft,
top: thisTop-parentTop
};
};
這雖然產(chǎn)生了多余的代碼,但比較可靠的多,用的讓人放心。
相關(guān)文章
jQuery實現(xiàn)高亮顯示網(wǎng)頁關(guān)鍵詞的方法
這篇文章主要介紹了jQuery實現(xiàn)高亮顯示網(wǎng)頁關(guān)鍵詞的方法,涉及jquery針對頁面字符串的遍歷與正則替換的相關(guān)技巧,非常具有實用價值,需要的朋友可以參考下2015-08-08
jQuery ajax serialize()方法的使用以及常見問題解決
使用ajax時,常常需要拼裝input數(shù)據(jù)為'name=abc&sex=1'這種形式,用JQuery的serialize方法可以輕松的完成這個工作接下來介紹jQuery ajax - serialize() 方法定義和用法,感興趣的朋友可以了解下啊,希望本文對你有所幫助2013-01-01
jQuery插件ajaxfileupload.js實現(xiàn)上傳文件
這篇文章主要為大家詳細(xì)介紹了jQuery插件ajaxfileupload.js實現(xiàn)上傳文件的相關(guān)資料,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2016-05-05
jquery實現(xiàn)鼠標(biāo)懸浮彈出氣泡提示框
這篇文章主要為大家詳細(xì)介紹了jquery實現(xiàn)鼠標(biāo)懸浮彈出氣泡提示框,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2020-12-12
解決jquery的ajax調(diào)取后端數(shù)據(jù)成功卻渲染失敗的問題
今天小編就為大家分享一篇解決jquery的ajax調(diào)取后端數(shù)據(jù)成功卻渲染失敗的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-08-08

