这个问题在这里已有答案:
使用 .fadeIn()
和 .fadeOut()
,我一直在我的页面上隐藏/显示一个元素,但有两个按钮,一个用于隐藏,一个用于显示 . 我现在想要一个按钮来切换两者 . 因此,我的问题是如何检测元素是否可见?
我的HTML原样:
<a onclick="showTestElement()">Show</a>
<a onclick="hideTestElement()">Hide</a>
我的JS原样是:
<script>
function showTestElement(){
$('#testElement').fadeIn('fast');
}
function hideTestElement(){
$('#testElement').fadeOut('fast');
}
</script>
我希望得到我的HTML:
<a onclick="toggleTestElement()">Show/Hide</a>
我喜欢我的JS,虽然纯jQuery会很好:
<script>
function toggleTestElement(){
if (document.getElementById('testElement').***IS_VISIBLE***) {
$('#testElement').fadeOut('fast');
}
else{
$('#testElement').fadeIn('fast');
}
}
</script>
任何帮助感激地收到..
3 回答
您正在寻找:
虽然您可能应该更改您的选择器以使用jQuery,因为您仍然在其他地方使用它:
重要的是要注意,如果隐藏了目标元素的父元素中的任何一个,那么子项上的
.is(':visible')
将返回false
(这是有意义的) .jQuery 3
由于它必须遍历DOM树来检查一堆元素,所以
:visible
已经成为一个相当慢的选择器 . 然而,对于jQuery 3来说,这是个好消息,因为this post解释了(Ctrl F代表:visible
):进一步扩展到您的特定用例,有一个内置的jQuery函数,名为$.fadeToggle():
没有必要,只需在元素上使用
fadeToggle()
:Here's a demo.