javascript - 获取元素的最近定位祖先

标签 javascript jquery css

根据 https://www.w3schools.com/css/css_positioning.asp ,

An element with position: absolute; is positioned relative to the nearest positioned ancestor (instead of positioned relative to the viewport, like fixed).

如何在普通 Javascript 或 JQuery 中获取元素的最近定位祖先?


offsetParent() 怎么样? https://api.jquery.com/offsetParent/

Description: Get the closest ancestor element that is positioned.

最佳答案

您可以测试该位置是否是父级的静态位置,如果不是,则继续,直到到达位置不同于静态的第一个祖先。

这是您可以调整的简化代码:

$('.box').each(function() {
  var p = $(this).parent();
  while (p && p.css('position') === 'static') {
    p = p.parent();
  }
  console.log(p.attr('class'));
})
.box {
  position: absolute;
}

.f2 {
  position: relative;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="f1">
  <div class="f2">
    <div class="f3">
      <div class="box"> <!-- This one relative to f2 -->
        <div class="box"> <!-- This one relative to box -->
        </div>
      </div>
    </div>
  </div>
</div>
<div class="f1">
  <div class="f2">
    <div class="f3" style="position:absolute;">
      <div class="box"> <!-- This one relative to f3 -->
      </div>
    </div>
  </div>
</div>

关于javascript - 获取元素的最近定位祖先,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48923990/

相关文章:

javascript - ECMAScript 规范是否允许 Array 为 "superclassable"?

javascript - 为什么我的回调说“undefined 不是一个函数?

css - 没有绝对位置的单页网页

jquery - 如何将 JavaScript 变量传递给 CSS3 动画?

javascript - 为什么他们在 javascript 中使用 namespace ?

javascript - 是否可以在 Angular 中使用获取请求?

javascript - 使用 Javascript 的三级面板菜单,无法正确加载内容

jquery - 使用鼠标从中心开始平移大图像

javascript - Vue2 - 用文本输入突出显示文本的方法

javascript - __EVENTTARGET 未定义