我想知道是否有人知道在组件可见时触发事件的方法。
在我的情况下,我有一堆客户端标签及其下的一些组件,需要知道它们何时可见。因此,它们被某个父容器隐藏或显示。我无法控制这些选项卡,因此我无法在切换选项卡时触发事件(我正在编写一个独立的JSF组件,因此我无法始终预测使组件可见的确切操作是什么)。
因此,此解决方案必须自包含在我的组件中。我的组件是否有办法确定它由于父容器中的某些更改而变得可见?
谢谢!
答案 0 :(得分:1)
在做了一些研究并查看http://plugins.jquery.com/project/watch插件的代码之后,我得出的结论是,没有基于好事件的方法可以在所有浏览器中执行我需要的操作。
所以,我不得不采用轮询方法。我的解决方案涉及检查组件可见性:
jQuery(this.id).is(":visible")
如果组件可见,我会为组件运行繁重的javascript代码。如果它不可见,我每200ms运行一个例程来检查组件是否可见。这样我就知道组件何时首次可见,所以我可以处理它。
由于每200ms执行的代码量非常小(只是可见性检查,我认为这是基于测试组件宽度== 0),这似乎表现得相当不错。
所以,不像我希望的那样解决方案很酷,但它似乎完成了工作。
答案 1 :(得分:0)
我通过在tabtrip切换标签时触发resize
事件来解决这个问题:
window.dispatchEvent(new Event('resize'));
您还可以考虑解雇scroll
和/或visibilitychange
。