获取不显示元素的计数

Getting count of display none elements

本文关键字:元素 显示 获取      更新时间:2023-09-26
     var checkLeft= $('#left .module:hidden');
     if(checkLeft) {
        if($('.resetLeft').length) {
          left.prepend('<span class="resetLeft">Reset Left Widgets</span>');
         }
     }

试图让这个正常工作有点麻烦。因为我真的不想要:hidden伪类,因为我相信IE不支持这个。基本上我创建了一个函数,这段代码就在里面。当它运行时,它检查父元素#left是否有.module类的任何display:none子元素,我使用了过滤函数,并且必须隐藏两个元素才能正确响应。有什么好主意吗?

这是一个启动的JSBIN

http://jsbin.com/upuwix/1/edit

(部分)jQuery的关键在于它可以跨浏览器工作。:hidden在所有浏览器中都可以作为jQuery选择器——doco说它"是一个jQuery扩展,不是CSS规范的一部分"。

然而,你的if测试是不正确的:

if(checkLeft) {

…总是为真,因为您正在测试的是jQuery对象本身——对象总是为真。您需要测试.length,看看是否有任何元素匹配您的选择器:

if (checkLeft.length) {

在这行之后,你已经使用了同样的技术:

   if($('.resetLeft').length) {

…除了这一行,你的逻辑颠倒了——如果长度为0,也就是说,如果还没有.resetLeft元素,你希望它为真,所以要么在条件的开头添加!,要么测试.length === 0:

   if(!$('.resetLeft').length) {

最后,left.prepend(...)不起作用,因为没有left变量。要么定义它,要么使用$('#left').prepend(...)

更新的演示:http://jsbin.com/upuwix/3/edit