【问题标题】:Problem getting jQuery offset() to work on ajax loaded content让 jQuery offset() 处理 ajax 加载的内容时出现问题
【发布时间】:2011-03-08 16:32:22
【问题描述】:

在我的代码中,offset() 总是为从 ajax 或 load() 方法加载的元素返回 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") 正在寻找对象 - 其他属性都很好。

【问题讨论】:

  • 你能提供一个 jsfiddle 或 jsbin 的例子吗?
  • 也许你应该尝试在load 函数之外获取offset()
  • @TheSuperTramp:虽然我也建议尝试这个,但文档说回调应该在 HTML 插入后触发。此时 DOM应该准备好了。
  • @Tomalak Geret'kal 所以问题一定是其他的......不是因为这些东西是 ajax 加载的......
  • @TheSuperTramp:是的,我想不通这个:/

标签: jquery ajax load offset


【解决方案1】:

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

所以问题必须是,为什么它不能在您的页面上运行?我们无法从给定的信息中肯定地回答这个问题,但这里有一些可能的原因:

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

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 2016-09-16
        • 1970-01-01
        • 2015-06-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-08-28
        • 1970-01-01
        相关资源
        最近更新 更多