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

首頁 > 語言 > JavaScript > 正文

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

2024-05-06 16:16:40
字體:
來源:轉載
供稿:網友
這篇文章主要介紹了jQuery.position()方法獲取不到值的安全替換方法,本文給出了一種變通的方法,用.offset()來換算,需要的朋友可以參考下
 

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

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

究其原因,以基于Webkit的瀏覽器(谷歌瀏覽器和Safari瀏覽器)為例,只有當元素(圖片、flash等)完全加載后,瀏覽器才能訪問到這些元素的高度和寬度,而火狐瀏覽器是在DOM加載完成后就能訪問這些屬性,它不需要知道這個元素的完整尺寸。而谷歌瀏覽器就不行。因此在谷歌/IE這樣的瀏覽器里,如果你想使用.position()獲取元素的偏移量,往往得到值就是初始值:0。

有一種補救的方法是將你的.position()調用放到 $(window).load()事件觸發之后,而不是$(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
    };
};


這雖然產生了多余的代碼,但比較可靠的多,用的讓人放心。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 绥芬河市| 姚安县| 高陵县| 拉萨市| 连云港市| 乌拉特中旗| 永川市| 乐都县| 乐安县| 尉犁县| 思南县| 永清县| 湖口县| 九龙县| 个旧市| 凤翔县| 内丘县| 安义县| 枣庄市| 绍兴县| 龙胜| 碌曲县| 洛隆县| 东源县| 满城县| 江油市| 抚顺市| 平舆县| 资阳市| 临漳县| 海丰县| 汉阴县| 九龙城区| 和林格尔县| 石棉县| 三江| 佛坪县| 平泉县| 信丰县| 乐山市| 德江县|