js判断不可见元素,chrome和firefox结果不一样

在如下这段代码中,在chrome中打印出来是显示8个不可见元素,firefox和ie中显示6个,但是我自己查只有三个,请教这是怎么回事<!DOCTYPEhtmlPUBLI... 在如下这段代码中,在chrome中打印出来是显示8个不可见元素,firefox和ie中显示6个,但是我自己查只有三个,请教这是怎么回事

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>2-8</title>
<style type="text/css">
div,span,p {
width:140px;
height:140px;
margin:5px;
background:#aaa;
border:#000 1px solid;
float:left;
font-size:17px;
font-family:Verdana;
}
div.mini {
width:55px;
height:55px;
background-color: #aaa;
font-size:12px;
}
div.hide {
display:none;
}
</style>
<!-- 引入jQuery -->
<script src="jquery.js" type="text/javascript"></script>
<script type="text/javascript">
//<![CDATA[
$(document).ready(function(){
$('#reset').click(function(){
window.location.reload();
})
//给id为mover的元素添加动画.
function animateIt() {
$("#mover").slideToggle("slow", animateIt);
}
animateIt();

//选取所有不可见的元素.包括<input type="hidden"/>.
$('#btn_hidden').click(function(){
alert( "不可见的元素有:"+$('body :hidden').length +"个!\n"+
"其中不可见的div元素有:"+$('div:hidden').length+"个!\n"+
"其中文本隐藏域有:"+$('input:hidden').length+"个!");
$('div:hidden').show(3000).css("background","#bbffaa");
})
//选取所有可见的元素.
$('#btn_visible').click(function(){
$('div:visible').css("background","#FF6500");
})
});
//]]>
</script>
</head>
<body>
<h3>可见性过滤选择器.</h3>
<button id="reset">手动重置页面元素</button><br/><br/>
<input type="button" value="选取所有可见的div元素." id="btn_visible"/>
<br/>
<input type="button" value="选取所有不可见的元素.包括<input type='hidden'/>和<div style='display:none;'>." id="btn_hidden"/>

<br /><br />

<!-- 测试的元素 -->
<div class="one" id="one" >
id为one,class为one的div
<div class="mini">class为mini</div>
</div>

<div class="one" id="two" title="test" >
id为two,class为one,title为test的div.
<div class="mini" title="other">class为mini,title为other</div>
<div class="mini" title="test">class为mini,title为test</div>
</div>

<div class="one">
<div class="mini">class为mini</div>
<div class="mini">class为mini</div>
<div class="mini">class为mini</div>
<div class="mini"></div>
</div>

<div class="one">
<div class="mini">class为mini</div>
<div class="mini">class为mini</div>
<div class="mini">class为mini</div>
<div class="mini" title="tesst">class为mini,title为tesst</div>
</div>

<div style="display:none;" class="none">
style的display为"none"的div
</div>

<div class="hide">class为"hide"的div</div>

<div>
包含input的type为"hidden"的div<input type="hidden" size="8"/>
</div>

<span id="mover">正在执行动画的span元素.</span>

</body>
</html>
展开
 我来答
匿名用户
2014-07-15
展开全部

不可见元素不是你通过一个hidden标签就能判断的, jQuery有个方法

.is(":hidden")//是否隐藏 display:none
.is(":visible")//是否可见 visible

可见和隐藏不是同一 个意思哈。给你个例子你就明白了

<script src="jquery.js"></script> 
<script> 
$(document).ready(function(){ 
var temp= $("#test").is(":hidden");//是否隐藏 
var temp1= $("#test").is(":visible");//是否可见 
var s=$("#ss").is(":hidden");
alert(temp) ; //true
alert(temp1) ;//false
alert(s); //true
}); </script> 
</head> 
<body> 
<div id="test" style="display:none"></div> 
<input type="hidden" id="ss">

你要统计div隐藏的就这样

var len=0;
$("div").each(function(){
if($(this).is(":hidden")){
len++;
}
});

alert(len);  

这段js要写在页面最底部哦
追问
我的意思是,我贴的那段代码利用alert输出来的不可见元素的数目,chrome显示是8个,而Firefox是6个,我想知道差别在哪
追答
是你写的筛选方法不兼容,input 属于inline-block 元素 这样判断是不兼容的。请用is(":hidden")
火狐
2014-07-17 · Firefox,最快最安全的上网体验
火狐
Mozilla Firefox火狐浏览器,是一款开放安全的开源浏览器,全球拥有5亿用户。
向TA提问
展开全部
  您好!很高兴为您答疑!

  筛选方法不兼容造成的,火狐下可以使用Firebug检查下页面代码,它集HTML查看和编辑、Javascript控制台、网络状况监视器于一体,是开发JavaScript、CSS、HTML和Ajax的得力助手。
  您可以在火狐社区了解更多内容。希望我的回答对您有所帮助,如有疑问,欢迎继续在本平台咨询。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式