【问题标题】:Get offsetTop of accordion after collapse折叠后获取手风琴的偏移顶部
【发布时间】:2020-01-26 11:25:35
【问题描述】:

我试图在点击后获取点击的手风琴标题的绝对位置。

问题是,Bootstrap 的手风琴折叠运动和我的 jquery 几乎是在同一个时刻触发的。发生的事情是我的 jquery 在折叠手风琴之前获得了偏移量。

折叠后,点击后标题可以有另一个offsetTop

有没有办法在折叠后给我的 jquery 加注星标,或者稍等片刻让手风琴折叠,然后请求offsetTop

const handle = document.querySelector('#handle');



const headers = document.querySelectorAll('.accordion')

   .forEach(el => {

       el.addEventListener('mouseover', e => {

           handle.style.top = `${e.currentTarget.offsetTop}px`;



   });

});

Here is an example

如您在示例中看到的,如果您先打开第一部分,然后再打开第二部分,点会向下移动很远。

如果您再次单击第二部分,它会移动到正确的位置

【问题讨论】:

标签: javascript jquery html


【解决方案1】:

如果我理解你的问题,你可以使用 setTimeout() 来等待你的动画完成

请注意,一个问题是我们没有设置动态等待时间,所以它可能感觉不那么灵敏。

    setTimeout(()=>{
        handle.style.top = `${e.target.offsetTop}px`;
    }, 200)

【讨论】:

  • 现在我收到以下错误 Uncaught TypeError: Cannot read property 'offsetTop' of null
  • 尝试将e作为参数传入匿名函数
  • @ThinkCode 试试我更新的例子。我注意到你应该使用 e.target 而不是 e.currentTarget
  • 我刚刚找到了相同的答案。它适用于我的示例页面,但不知何故现在在我的实时页面中。如果我弄清楚了,我会尝试写完整的答案。非常感谢!
猜你喜欢
  • 2011-11-19
  • 2011-10-01
  • 2012-11-21
  • 2016-02-28
  • 2020-01-25
  • 2012-09-23
  • 2014-02-18
  • 2016-08-18
  • 1970-01-01
相关资源
最近更新 更多