gpt4 book ai didi

javascript - jQuery offsetparent 也返回非定位父级

转载 作者:行者123 更新时间:2023-11-30 10:35:07 25 4
gpt4 key购买 nike

我正在尝试以下代码:

<!DOCTYPE html>
<html>
<head>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js">
</script>
<script>
$(document).ready(function(){
$("span").click(function(){
alert($(this).offsetParent().length);
});
});
</script>
</head>
<body>
<p>If you click on me, I will disappear.</p>
<p><span>Click me away!</span></p>
<p>Click me too!</p>
</body>
</html>

根据 jQuery 文档,offsetParent() 应该返回位置最近的父级,positioned 表示 position 明确定义为 ' static,absoluteorrelative`。在这里,没有为任何元素声明任何元素,但弹出警报 1。怎么会这样?

最佳答案

首先让我们看一下返回结果:

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

因此,对于 $(span).offsetParent(),您将获得 HTML 元素。

现在让我们看一下offsetParent的实现:

offsetParent: function() {
return this.map(function() {
var offsetParent = this.offsetParent || document.documentElement;
while ( offsetParent && ( !jQuery.nodeName( offsetParent, "html" ) && jQuery.css( offsetParent, "position") === "static" ) ) {
offsetParent = offsetParent.offsetParent;
}
return offsetParent || document.documentElement;
});
}

从上面的代码我们可以看出,如果我们没有定位父元素,offsetParent 将返回 HTML 元素。

唯一不好的是,当我查看不存在的文档时。

要检查是否确实有一个 offsetParent,您可以使用:

document.getElementsByTagName('html')[0] === $(elem).offsetParent()[0]

关于javascript - jQuery offsetparent 也返回非定位父级,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14453979/

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