用于隐藏元素的EventListener

问题描述 投票:1回答:2

我试图找到一个Javascript事件,当元素的Display设置为none时将触发该事件。 style="display: none;"

我不得不使用vanilla JS(不能使用jQuery),遗憾的是,无法实现Mutation Observer作为可能的解决方案。

换句话说,我试图找到一个与Element.addEventListener一起使用的事件。

是否有任何其他事件在隐藏元素时被触发?

javascript event-listener dom-events
2个回答
0
投票

不幸的是,元素隐藏时没有事件。从逻辑上讲,你可以使用onchange事件,但这只适用于<select>, <option>, <form>

在这种情况下我应该做的是找到你的元素被隐藏并在其上携带事件。或者甚至更好的是找到它被隐藏的事件(即使你使用插件,你可以在源代码中找到它)。

例如,如果您知道单击一次按钮,它就会隐藏。在你的DOM上携带超过1个事件是可以的。


0
投票

一种可能的方法是使用setIntervalgetComputedStyle来检查显示的样式

var elem = document.getElementById('div');
var interval = setInterval((() => {
  if (window.getComputedStyle(elem).display === "none") {
    console.log('hidden');
    clearInterval(interval);
  }
}), 500);

setTimeout((() => elem.style.display = 'none'), 2000);
<div id='div'> Foo </div>
© www.soinside.com 2019 - 2024. All rights reserved.