如何在 jQuery 中检查一个元素是否隐藏

在前端开发中,我们常常需要判断一个元素是否隐藏。在 jQuery 中,有多种方式可以实现这一点。然而,并不是所有的解决方案都适用于所有情况。为此,我写了一个通用的解决方案来应对各种复杂情形。本文将详细介绍这个方法及其使用方式。

测试条件

为了确保代码的通用性,该方法涵盖以下几种情况:

  1. 检测文档是否隐藏: 有时整个文档处于隐藏状态,例如在某些浏览器的背景标签页中。
  2. 测试元素的宽度、高度、透明度以及内联样式中的 display:nonevisibility:hidden 如果元素的宽度或高度为零,透明度为零,或者内联样式设置为 display:nonevisibility:hidden,则该元素被认为是隐藏的。
  3. 检测元素中心点是否被其他元素遮挡: 如果元素的中心被其他元素(例如具有 overflow:hidden、滚动或覆盖的元素)或屏幕边缘遮挡,该元素也被视为隐藏。
  4. 检测计算样式中的宽度、高度、透明度以及 display:nonevisibility:hidden 同时会检查所有祖先元素的这些属性,以确保任何一个包含祖先元素设置为隐藏状态时,当前元素都被视为隐藏。

适用的浏览器

该方法在多个平台和浏览器上进行了测试,包括:

  • Android 4.4 (原生浏览器/Chrome/Firefox)
  • Firefox (Windows/Mac)
  • Chrome (Windows/Mac)
  • Opera (Presto 引擎/ Mac WebKit)
  • Internet Explorer (IE 5-11 文档模式,以及虚拟机上的 IE 8)
  • Safari (Windows/Mac/iOS)

代码实现

下面是实现这一功能的 JavaScript 代码。请确保在您的项目中引入 jQuery 库。

var is_visible = (function () {var x = window.pageXOffset ? window.pageXOffset + window.innerWidth - 1 : 0,y = window.pageYOffset ? window.pageYOffset + window.innerHeight - 1 : 0,relative = !!((!x && !y) || !document.elementFromPoint(x, y));function inside(child, parent) {while (child) {if (child === parent) return true;child = child.parentNode;}return false;}return function (elem) {if (document.hidden ||elem.offsetWidth === 0 ||elem.offsetHeight === 0 ||elem.style.visibility === 'hidden' ||elem.style.display === 'none' ||elem.style.opacity === 0) return false;var rect = elem.getBoundingClientRect();if (relative) {if (!inside(document.elementFromPoint(rect.left + elem.offsetWidth / 2, rect.top + elem.offsetHeight / 2), elem)) return false;} else if (!inside(document.elementFromPoint(rect.left + elem.offsetWidth / 2 + window.pageXOffset, rect.top + elem.offsetHeight / 2 + window.pageYOffset), elem) ||(rect.top + elem.offsetHeight / 2 < 0 ||rect.left + elem.offsetWidth / 2 < 0 ||rect.bottom - elem.offsetHeight / 2 > (window.innerHeight || document.documentElement.clientHeight) ||rect.right - elem.offsetWidth / 2 > (window.innerWidth || document.documentElement.clientWidth))) return false;if (window.getComputedStyle || elem.currentStyle) {var el = elem,comp = null;while (el) {if (el === document) { break; }else if (!el.parentNode) return false;comp = window.getComputedStyle ? window.getComputedStyle(el, null) : el.currentStyle;if (comp && (comp.visibility === 'hidden' || comp.display === 'none' || (typeof comp.opacity !== 'undefined' && comp.opacity !== 1))) {return false;}el = el.parentNode;}}return true;};
})();

使用方法

要使用该函数,只需将目标元素传递给 is_visible 函数。该函数将返回一个布尔值,表示元素是否可见。

is_visible(elem); // 返回布尔值

通过本文的讲解,相信您已经掌握了如何在 jQuery 中判断一个元素是否隐藏的多个方面,希望这对您的项目有所帮助。如有任何问题,欢迎在评论区留言讨论。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/17305.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

知识存储概述

文章目录 知识存储概述知识存储方式知识存储基础工具技术发展趋势 知识存储是针对知识图谱的知识表示形式设计底层存储方式&#xff0c;完成各类知识的存储&#xff0c;以支持对大规模图数据的有效管理和计算。知识存储的对象包括基本属性知识、关联知识、事件知识、时序知识和…

操作系统 实验17 批处理操作接口7:until循环与select循环

1、建立文件Until.sh实现累加和 脚本&#xff1a; #!/bin/bash sum010 sum020 i1 until [ $i -gt 100 ] dolet "sum01i"let "ji%2"if [ $j -ne 0 ];thenlet "sum02i"filet "i1" done echo $sum01 echo $sum02命令&#xff1a;. ./Un…

深入解析 RocketMQ 和 Kafka 的消息压缩机制

深入解析 RocketMQ 和 Kafka 的消息压缩机制 消息队列系统在现代分布式系统中扮演着重要角色&#xff0c;它们不仅需要高效地传递消息&#xff0c;还需要在传输过程中尽量减少带宽和存储的占用。消息压缩是一种常见的优化手段&#xff0c;可以显著减少消息的体积。本文将详细探…

Spring Security:认证与授权

Spring Security&#xff1a;认证与授权 在这篇文章中&#xff0c;你将学到与Spring Security相关的五个关键概念和术语&#xff0c;这些是你真正需要了解的。当你学习Spring Security时&#xff0c;你会一次又一次地遇到这些核心术语和概念。因此&#xff0c;在这篇文章中&am…

深入Docker in Docker:原理解析与实战演练

Docker in Docker&#xff08;简称DinD&#xff09;是一个在Docker容器内部运行另一个Docker守护进程和客户端的技术。这允许在一个容器中执行Docker命令&#xff0c;就像在宿主机上一样。这种技术在某些用例中非常有用&#xff0c;比如CI/CD管道、测试环境或者某些需要隔离的环…

linux网卡MAC地址

1、ifconfig命令查看网卡MAC地址 1.1 通过HWaddr或ether字段过滤mac地址 ifconfig | grep HWaddr ifconfig | grep ether [rootlocalhost ~]# /sbin/ifconfig | grep ether 注&#xff1a;有些Linux发行版本的MAC地址字段为HWaddr&#xff0c;有些Linux发行版本的MAC地址字段…

智能未来,触手可及,畅享移动云

目录 一、简介 二、移动云强大优势 1. 强大的网络基础设施 2. 可靠服务 3. 丰富产品线 4. 技术应用 5. 优惠价格策略 三、多商对比 网络优势 四、移动云的未来发展 五、实战应用 5.1 服务器选购 ​编辑5.2 服务器启动 5.3 实例操作 六、移动云的服务优势 6.1 客…

postman教程-5-发送put请求

领取资料&#xff0c;咨询答疑&#xff0c;请➕wei: June__Go 上一小节我们学习了postman发送post请求的方法&#xff0c;本小节我们讲解一下postman发送put请求的方法。 HTTP PUT 请求是一种用于传输数据的网络协议方法&#xff0c;它在客户端和服务器之间的通信中扮演着重…

数据中心、HPC、AI等应用场景互联协议混战哪家强?

生成式人工智能快速发展对算力与存力呈指数需求增长&#xff0c;进一步加剧了算力与存力之间既有矛盾&#xff0c;时代在呼唤更大的运力&#xff08;即计算与存储之间的数据传输&#xff09;--AIGC时代需要更大带宽&#xff0c;更为快速的数据传输路径。 众所周知&#xff0c;P…

香橙派AIpro初体验,详解如何安装Home Assistant Supervised

香橙派AIpro&#xff08;OrangePi AIpro&#xff09;开发版&#xff0c;定位是一块AI开发板&#xff0c;搭载的是华为昇腾310&#xff08;Ascend310&#xff09;处理器。 没想到&#xff0c;这几年的发展&#xff0c;AI开发板也逐渐铺开&#xff0c;记得之前看到华为发布昇腾3…

javascript 防抖 节流

在前端开发中&#xff0c;性能优化是提升用户体验的关键环节。防抖&#xff08;Debounce&#xff09;和节流&#xff08;Throttle&#xff09;作为两种常见的优化技术&#xff0c;能够有效管理和控制频繁触发的事件&#xff0c;减少不必要的计算和资源消耗。无论是在处理用户输…

基于香橙派 Ai Pro的ROS Qt人机交互软件部署指南

一&#xff0c;前言 最近收到了CSDN的邀请,对香橙派新出的Ai Pro进行测评: 说来也巧&#xff0c;其实香橙派本人对其映像挺深刻的,在2017年左右,本人刚上大学,当时是在淘宝购买树莓派&#xff0c;发现有个叫香橙派的国产板子&#xff0c;性能跟树莓派差不多吧&#xff0c;但是…

数据仓库和数据挖掘基础

文章目录 1. 数据仓库基础知识1.1 数据仓库的基本特性1.2 数据仓库的数据模式1.3 数据仓库的体系结构 2. 数据挖掘基础知识2.1 数据挖掘的分类2.2 数据挖掘技术2.3 数据挖掘的应用过程 传统数据库在联机事务处理(OLTP)中获得了较大的成功&#xff0c;但是对管理人员的决策分析要…

json和jsonl文件格式个人记录

.jsonl 文件 {"name": "Alice", "age": 30} {"name": "Bob", "age": 25}每行是一个独立的有效 JSON 对象。每行之间没有逗号或其他分隔符。适合存储每行为独立记录的数据&#xff0c;如日志、传感器数据、日志行…

告别低效率||智能BI财务分析软件

在当今信息爆炸的时代&#xff0c;财务数据作为企业运营的核心&#xff0c;其处理和分析的效率直接关系到企业的决策速度和市场竞争力。奥威BI软件凭借其卓越的性能和智能化的分析功能&#xff0c;为企业提供了一套高效、准确的财务分析解决方案。 奥威BI软件在财务分析中的优…

流程引擎之compileflow idea 2024.*插件支持

之前有使用过多种类型工作流&#xff0c;但最近研究工作流引擎对比各有优劣&#xff0c;compileflow内存支持性能不错&#xff0c;但在idea新版本使用的时候发现插件不支持&#xff0c;干脆自己修改源码手撸一个&#xff08;当前版本2024.1验证可用&#xff0c;如果有其他版本不…

5G工业三防平板电脑M195T:高性价比安卓加固手持终端

在工业领域&#xff0c;设备的坚固性和高效性能至关重要。亿道公司推出的全新5G工业三防平板电脑M195T&#xff0c;以其卓越的硬件配置和坚固耐用的设计&#xff0c;成为工业应用的理想选择。M195T不仅搭载了强大的ARM八核架构处理器和Android 11系统&#xff0c;还集成了多种先…

【C语言】文件操作(超级详细)

如果没有文件&#xff0c;我们写的程序的数据都存储在内存中&#xff0c;当程序退出&#xff0c;内存回收&#xff0c;数据就丢失了&#xff0c;下次再运行程序&#xff0c;已经看不到上次运行的数据了&#xff0c;而为了将数据持久性的保存&#xff0c;就需要使用文件。 一、…

电商新力量,四川易点慧电子商务有限公司

在数字化浪潮席卷全球的今天&#xff0c;电子商务行业正以前所未有的速度蓬勃发展。作为这一领域的佼佼者&#xff0c;四川易点慧电子商务有限公司凭借其独特的创新理念和前瞻性的战略布局&#xff0c;成功引领智慧零售新潮流&#xff0c;为行业发展注入了新的活力。 四川易点慧…

通付盾Web3专题 | SharkTeam:Web3常见钓鱼方式分析与安全防范建议

引言 Web3钓鱼是一种针对Web3用户的常见攻击手段&#xff0c;通过各种方式窃取用户的授权、签名&#xff0c;或诱导用户进行误操作&#xff0c;目的是盗窃用户钱包中的加密资产。 近年来&#xff0c;Web3钓鱼事件不断出现&#xff0c;且发展出钓鱼即服务的黑色产业链&#xf…