为了账号安全,请及时绑定邮箱和手机立即绑定

使用jQuery检测元素是否可见

使用jQuery检测元素是否可见

Smart猫小萌 2019-11-22 15:36:39
使用.fadeIn()和.fadeOut(),我一直在页面上隐藏/显示一个元素,但是有两个按钮,一个用于隐藏,一个用于显示。我现在想要一个按钮来同时切换两者。我的HTML / JavaScript是这样的:<a onclick="showTestElement()">Show</a><a onclick="hideTestElement()">Hide</a>function showTestElement() {  $('#testElement').fadeIn('fast');}function hideTestElement() {  $('#testElement').fadeOut('fast');}我想要的HTML / JavaScript:<a onclick="toggleTestElement()">Show/Hide</a>function toggleTestElement() {  if (document.getElementById('testElement').***IS_VISIBLE***) {    $('#testElement').fadeOut('fast');  } else {    $('#testElement').fadeIn('fast');  }}如何检测元素是否可见?
查看完整描述

3 回答

?
慕勒3428872

TA贡献1848条经验 获得超6个赞

无需使用,只需fadeToggle()在元素上使用:


$('#testElement').fadeToggle('fast');


查看完整回答
反对 回复 2019-11-22
?
繁星coding

TA贡献1797条经验 获得超4个赞

if($('#testElement').is(':visible')){

    //what you want to do when is visible

}


查看完整回答
反对 回复 2019-11-22
?
ABOUTYOU

TA贡献1812条经验 获得超5个赞

您正在寻找:


.is(':visible')

尽管您可能考虑到仍在其他地方使用它,但应该将选择器更改为使用jQuery:


if($('#testElement').is(':visible')) {

    // Code

}

重要的是要注意,如果目标元素的父元素中的任何一个被隐藏,则.is(':visible')子元素将返回false(这很有意义)。


jQuery 3

:visible一直以选择器速度较慢而著称,因为它必须遍历检查一堆元素的DOM树。但是,对于jQuery 3来说有个好消息,因为这篇文章解释了(Ctrl+ F代表:visible):


感谢Google的Paul Irish所做的一些侦探性工作,我们发现在某些情况下,当在同一文档中多次使用自定义选择器(如:visible)时,我们可以跳过很多额外的工作。现在,这种特殊情况的速度提高了17倍!


请记住,即使有了这一改进,像:visible和:hidden这样的选择器也可能很昂贵,因为它们取决于浏览器来确定元素是否实际显示在页面上。在最坏的情况下,可能需要完全重新计算CSS样式和页面布局!尽管在大多数情况下我们不鼓励使用它们,但建议您测试页面以确定这些选择器是否引起性能问题。


进一步扩展到您的特定用例,有一个内置的jQuery函数称为$.fadeToggle():


function toggleTestElement() {

    $('#testElement').fadeToggle('fast');

}


查看完整回答
反对 回复 2019-11-22
  • 3 回答
  • 0 关注
  • 767 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号