当阅读jQuery源代码时,我发现有时$()。offsetParent()返回html,而本机js返回body。while ( offsetParent && ( !jQuery.nodeName( offsetParent, "html" ) &&jQuery.css( offsetParent, "position") === "static" ) ) {offsetParent = offsetParent.offsetParent;}情况是这样的:当offsetParent为body时,在此处运行代码“ offsetParent = offsetParent.offsetParent;”。我的测试:console.log(document.getElementById('div').offsetParent);console.log($('#div').offsetParent());结果: ... [html,prevObject:jQuery.fn.jQuery.init [1],上下文:文档, jQuery:“ 2.0.3”,构造函数:函数,初始化:函数…]但是是什么原因呢?为什么jQuery的这项工作? (adsbygoogle = window.adsbygoogle || []).push({}); 最佳答案 根据文档是否处于怪异模式,本机offsetParent方法具有不同的行为。 MDN说: 如果该元素未定位,则最接近的表格单元格或根元素(在标准兼容模式下为html;在怪异的渲染模式下为body)是offsetParent。我认为jQuery正在尝试对此进行标准化,因此它始终返回html。使用jQuery之类的库的原因之一是隐藏浏览器差异。 (adsbygoogle = window.adsbygoogle || []).push({}); 09-19 02:53