jQuery offset() 在 ajax 加载的内容上工作时出现问题

发布于 2024-10-21 00:57:53 字数 321 浏览 3 评论 0原文

在我的代码中,对于从 ajax 或 load() 方法加载的元素,offset() 始终返回 0,0 - 有什么想法吗?

人为的示例代码:

jQuery("#div1").load(url, function() {
   var offset = jQuery("#some-div-in-new-content").offset();
   // offset is always 0,0
});

我已经验证 jQuery("#some-div-in-new-content") 正在查找对象 - 其他属性都很好。

In my code, offset() always returns 0,0 for elements loaded from ajax or load() method - any ideas?

Contrived sample code:

jQuery("#div1").load(url, function() {
   var offset = jQuery("#some-div-in-new-content").offset();
   // offset is always 0,0
});

I have validated that jQuery("#some-div-in-new-content") is finding the object - other properties are good.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

风吹短裙飘 2024-10-28 00:57:54

我遇到了类似的问题,并使用 offset().top 检查新加载元素的位置,发现我的问题是在元素之后没有使用 clear: Both;
也许它会对某人有所帮助。

I have had a similar problem and checking the position of the newly loaded elements with offset().top revealed that my problem was with not using clear: both; after the element.
Maybe it will help someone.

洒一地阳光 2024-10-28 00:57:54

在我的例子中,Loaded HTML 的父级被隐藏,因此偏移量为零。因此,请确保加载 HTML 响应后使其或其父级可见,然后计算偏移量。

In my case Loaded HTML's parent was hidden and so offset were zero. So make sure after loading HTML response make it or its parent visible and then calculate offset.

长安忆 2024-10-28 00:57:53

当然,从根本上来说, offset 确实使用ajax加载的内容:https://output.jsbin.com/gixoxojomu。如果没有的话,那就非常、非常、非常奇怪,因为一旦新内容被加载到 DOM 中,基本上就没有办法知道它来自哪里。

所以问题是,为什么它在你的页面上不起作用?我们无法从给定的信息中确定回答这个问题,但以下是一些可能的原因:

  • 也许您有一个 不同的 div,其 ID 为 some-div-in-new-content,页面上的其他位置,具有 0,0 偏移量。
  • 也许内容被隐藏了。从文档中:

    <块引用>

    jQuery 不支持获取隐藏元素的偏移坐标,也不支持在 body 元素上设置边框、边距或填充。

Fundamentally, of course, offset does work with ajax-loaded content: https://output.jsbin.com/gixoxojomu. It would be very, very, very strange if it didn't, since there's basically no way to tell, once new content has been loaded into the DOM, where it came from.

So the question has to be, why isn't it working on your page? We can't answer that for sure from the given information, but here are some possible reasons:

  • Perhaps you have a different div with the ID some-div-in-new-content, somewhere else on the page, that has the 0,0 offset.
  • Perhaps the content is hidden. From the documentation:

    jQuery does not support getting the offset coordinates of hidden elements or accounting for borders, margins, or padding set on the body element.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文