jQuery offset() 在 ajax 加载的内容上工作时出现问题
在我的代码中,对于从 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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
我遇到了类似的问题,并使用
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 usingclear: both;
after the element.Maybe it will help someone.
在我的例子中,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.
当然,从根本上来说,
offset
确实使用ajax加载的内容:https://output.jsbin.com/gixoxojomu。如果没有的话,那就非常、非常、非常奇怪,因为一旦新内容被加载到 DOM 中,基本上就没有办法知道它来自哪里。所以问题是,为什么它在你的页面上不起作用?我们无法从给定的信息中确定回答这个问题,但以下是一些可能的原因:
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:
some-div-in-new-content
, somewhere else on the page, that has the 0,0 offset.