国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

jQuery.position()方法獲取不到值的安全替換方法

2019-11-20 12:57:20
字體:
供稿:網(wǎng)友

調(diào)用jQuery.position()方法會返回相對于父元素的位置,jQuery官方文檔中描述說,它跟.offset()方法不一樣,.offset()返回的是相對于document的位置,而.position()返回的是相對于父元素的位置。

但事實上,在使用的過程中,我們發(fā)現(xiàn).position()返回的值經(jīng)常是0。但事實不是0。尤其是谷歌瀏覽器和IE瀏覽器里。火狐瀏覽器沒有此問題。

究其原因,以基于Webkit的瀏覽器(谷歌瀏覽器和Safari瀏覽器)為例,只有當元素(圖片、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)生了多余的代碼,但比較可靠的多,用的讓人放心。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 张掖市| 滨海县| 海南省| 高雄市| 疏勒县| 重庆市| 宣汉县| 芜湖市| 塔城市| 通海县| 兴宁市| 南陵县| 龙江县| 竹北市| 陈巴尔虎旗| 延庆县| 乌海市| 探索| 望江县| 广西| 桂阳县| 石柱| 宜兴市| 和田县| 莫力| 辽源市| 河南省| 汉寿县| 湘潭县| 宣城市| 闽侯县| 左云县| 黔东| 三江| 封丘县| 盐池县| 保亭| 浪卡子县| 余姚市| 汉川市| 兰州市|