You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

jQuery offset()问题:获取点击所在侧边栏内sidebar-header的位置

解决方法

问题出在你直接用$('.sidebar-header')时,jQuery会选中DOM里所有带这个类的元素,默认取第一个(也就是左侧侧边栏的那个),所以不管点哪个侧边栏里的元素,拿到的都是左边的header位置。

要获取点击元素所在侧边栏的header,得基于点击的元素(this)向上找到它所属的.sidebar-inner容器,再在这个容器里找.sidebar-header,具体修改代码如下:

$('.cssClass1, .cssClass2').on('click', function (){
   // 先定位到点击元素所属的侧边栏容器,再找内部的header
   var targetHeader = $(this).closest('.sidebar-inner').find('.sidebar-header');
   var position = targetHeader.offset();
            
   if (position.top < 0){
      console.log('unvisible');
   } else {
      console.log('visible')
   };
});

关键方法说明:

  • $(this).closest('.sidebar-inner'):从点击元素开始向上遍历DOM树,找到最近的.sidebar-inner父容器,精准锁定当前点击元素所属的侧边栏。
  • .find('.sidebar-header'):在这个容器内部查找目标header,确保拿到的是当前侧边栏的,而非其他侧边栏的。

如果不想用closest,也可以用$(this).parents('.sidebar-inner').first(),效果类似,但closest性能更优——找到第一个匹配项就会停止遍历。

内容的提问来源于stack exchange,提问作者Groundhog

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 20:52:05