gpt4 book ai didi

javascript - 为什么 jquery offsetParent() 返回 html 而 native javascript 返回 body

转载 作者:行者123 更新时间:2023-11-30 16:56:00 25 4
gpt4 key购买 nike

在阅读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());

结果:

<body>...</body>

[html, prevObject: jQuery.fn.jQuery.init[1], context: document, jquery: "2.0.3", constructor: function, init: function…]

但这是什么原因呢?为什么 jquery 做这个工作?

最佳答案

native offsetParent 方法具有不同的行为,具体取决于文档是否处于 quirks 模式。 MDN说:

If the element is non-positioned, the nearest table cell or root element (html in standards compliant mode; body in quirks rendering mode) is the offsetParent.

我认为 jQuery 正试图对此进行标准化,因此它总是返回 html。您使用 jQuery 等库的原因之一是隐藏浏览器差异。

关于javascript - 为什么 jquery offsetParent() 返回 html 而 native javascript 返回 body,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29719755/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com