请教,设置position: relative后,jQuery offset()定位不准的原因

winzond 2018-10-23 12:52:17
因为一些其它元素的需要设置祖先元素position: relative,设置出来的位置会产生一个固定的位差,请教这个位差是怎么产生的,怎么才能消除这个位差?只要把祖先元素的position: relative取消,就正常了,但真的不能取消,取消会产生其它更严重的问题。
function addChgTdBar($gridTable) {
$tgtBar = $gridTable.find(".changeWBar").empty();
$gridTable.find(".sort").each(function () {
var top = $(this).offset().top;
var left = $(this).offset().left + $(this).width() - 3;
console.log("top:" + top + " left:" + left);
var $newDiv = $('<div class="changeTdW"></div>')
$newDiv.css("height", $(this).height()+2).attr("data-i", $(this).attr("data-i"))
.offset({ top: top, left: left }).appendTo($tgtBar);
});
}
...全文
390 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
天际的海浪 2018-10-23
  • 打赏
  • 举报
回复
.offset().top获取的值没有问题,问题在用offset()设置坐标上 .offset({ top: top, left: left })是要根据元素在页面中的位置来设置坐标。如有祖先元素是position: relative,就减少相对的坐标。 所以新创建的元素要先添加到页面上再用offset()设置坐标 .appendTo($tgtBar).offset({ top: top, left: left });

87,914

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧