首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >DOM对象的jQuery x y文档坐标

DOM对象的jQuery x y文档坐标
EN

Stack Overflow用户
提问于 2009-06-16 17:41:07
回答 2查看 93.3K关注 0票数 51

我需要获取一个DOM元素的X,Y坐标(相对于文档的左上角)。我找不到任何可以提供这些的插件、jQuery属性或方法。我可以获得DOM元素的顶部和左侧,但它既可以是相对于当前容器/父元素的,也可以是相对于文档的。

EN

回答 2

Stack Overflow用户

发布于 2010-01-25 13:35:49

我的解决方案是一个带有“变通”:+D的插件。但是很管用!

jQuery.fn.getPos = function(){
        var o = this[0];
        var left = 0, top = 0, parentNode = null, offsetParent = null;
        offsetParent = o.offsetParent;
        var original = o;
        var el = o;
        while (el.parentNode != null) {
            el = el.parentNode;
            if (el.offsetParent != null) {
                var considerScroll = true;
                if (window.opera) {
                    if (el == original.parentNode || el.nodeName == "TR") {
                        considerScroll = false;
                    }
                }
                if (considerScroll) {
                    if (el.scrollTop && el.scrollTop > 0) {
                        top -= el.scrollTop;
                    }
                    if (el.scrollLeft && el.scrollLeft > 0) {
                        left -= el.scrollLeft;
                    }
                }
            }            
            if (el == offsetParent) {
                left += o.offsetLeft;
                if (el.clientLeft && el.nodeName != "TABLE") {
                    left += el.clientLeft;
                }
                top += o.offsetTop;
                if (el.clientTop && el.nodeName != "TABLE") {
                    top += el.clientTop;
                }
                o = el;
                if (o.offsetParent == null) {
                    if (o.offsetLeft) {
                        left += o.offsetLeft;
                    }
                    if (o.offsetTop) {
                        top += o.offsetTop;
                    }
                }
                offsetParent = o.offsetParent;
            }
        }
        return {
            left: left,
            top: top
        };
    };

用法:

var p = $("#wrapper2").getPos();
alert("top:"+p.top+"; left:"+p.left);
票数 7
EN

Stack Overflow用户

发布于 2009-06-16 18:05:14

offset函数将为您完成此操作。

下面是他们给出的例子:

var p = $("p:last");
var offset = p.offset();
p.html( "left: " + offset.left + ", top: " + offset.top );
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1002934

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档