You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在jQuery拖拽stop事件中获取元素的绝对位置?

获取拖拽元素的绝对位置解决方案

嘿,我来帮你搞定这个问题!你现在代码里用的$(this).parent().position(),拿到的其实是父元素相对于它自己定位父元素的偏移量,完全不是目标拖拽元素的绝对位置,这就是问题的根源啦。

要获取元素的绝对位置(相对于整个文档),直接用jQuery的offset()方法就可以,它会返回元素相对于文档左上角的坐标。修改你的拖拽停止事件处理函数就行:

$(".main_line").draggable({ 
    stop: function(event, ui) { 
        // 获取元素相对于文档的绝对位置
        var absolutePos = $(this).offset(); 
        console.log("绝对位置(文档坐标):", absolutePos); 

        // 额外补充:如果需要相对于浏览器视口的位置,可用原生JS方法
        var viewportRect = this.getBoundingClientRect();
        console.log("相对于视口的位置:", viewportRect.top, viewportRect.left);
    } 
});

给你简单理清楚几个常用位置方法的区别,避免再踩坑:

  • position():返回元素相对于最近的已定位父元素的偏移量(相对位置)
  • offset():返回元素相对于整个文档的偏移量(绝对位置,这正是你需要的)
  • getBoundingClientRect():原生JS方法,返回元素相对于浏览器视口的位置,还包含宽高信息,页面滚动时这个值会随之变化

这样修改后,你就能在拖拽停止时精准拿到元素的绝对位置啦!

内容的提问来源于stack exchange,提问作者Tirkesh Turkesh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 03:50:09