jQuery判断对象是否隐藏(display和visibility的区别)

来源:互联网 发布:淘宝网信用卡网银支付 编辑:程序博客网 时间:2024/06/04 18:21

项目中遇到问题,要判断一个元素是否被隐藏了,网上查了很多方法,但都解决不了我的问题,页面上元素明明看不到元素了,但返回值一直是未隐藏。最后浏览器跟踪CSS样式发现,我的项目中元素被隐藏不是设置的hidden属性或者display:none,而是设置的visibility属性。重新查了一下visibility属性,终于解决了问题,成功判断了隐藏,以下为示例代码,其中obj是要判断是否隐藏的元素,供参考:

var visible=($(obj).css("visibility")&&$(obj).css("visibility")=="hidden")?false:true;//判断visibility属性var display=$(obj).is(':visible');//返回值为true则对象是显示的,false则是隐藏的if(!visible&&!display){alert("该对象是被隐藏的");}

需要说明的是:

visibility属性其实是隐藏了元素,使其在网页上不可见,但它在页面上所占的空间是保留的,就是看不见但摸得到,用is(“:visible”)时仍然会返回为true;

display:none 和表单的type=“hidden“等属性则是隐藏了元素,也不为其保留物理空间,即该对象在页面上彻底消失,就是看不见也摸不到,用is(“:visible”)时才会返回false;

所以,在判断元素隐藏的时候除了用通俗的is(“:visible”)、.css('display')等方式外,还应该加上对visibility属性的判断,记录在此。