2010-08-13 71 views
1

例如,我不得不手动做这样的:检查所有div具有相同的类或不

function checkDivUppersClosed() { 
    var allOpened = true; 
    $('.classUpper').each(function (index, domEle) { 
     allOpened &= $(this).parent().hasClass('closed'); 
    }); 
    return allOpened;   
} 

我知道,如果我选择$('.closed').size()将返回长度为好。但就我而言,一些divs拥有class classup,但根本没有。

+0

“.closed”代表隐藏吗?如果是这样,你可以使这个*更短,例如'$('。classUpper:visible')。length === 0'将意味着它们全部关闭。 – 2010-08-13 11:04:05

+1

所以你只是想要所有的共同课堂的div?或者,正如标题所述,你想知道所有的div是否有相同的类,并返回什么?从你的代码片段看来,你正在寻找前者。 – 2010-08-13 11:07:10

+0

同意詹姆斯 - 你能否让这个问题更清楚一点?你究竟想达到什么目标?示例标记也可能有所帮助。 – 2010-08-13 11:12:09

回答

3

能做你现在的文字版本,请检查你可以这样做:

return $('.classUpper').parent(':not(.closed)').length; 

这将返回未关闭计数(这些元素的父母那:not()closed类)。您可以将该数字用作真/假检查,或者添加=== 0以明确。

但如果要添加的closed类是隐藏它们,可以使用:visible选择,就像这样:

return $('.classUpper:visible').length === 0; 
+0

是'.size()'和'.length'是一回事吗?我以为jQuery只有'.size()'和数组有'.length'? – 2010-08-13 11:19:19

+0

@Bob - 一个jQuery对象*是一个DOM元素数组,如果你[看看源代码](http://github.com/jquery/jquery/blob/master/src/core.js#L180),调用'.size()'只是'.length'的包装:) – 2010-08-13 11:20:27

+0

我知道它里面有一个dom元素数组,但我认为长度是私有的,我不知道属性是由jQuery的代码维护 – 2010-08-13 11:26:21

-1

为什么不:

$('.classUpper .closed') 
+0

这将检查* same *元素上的两个类,他检查子级上的一个类,父级上的另一个类。 – 2010-08-13 11:05:03

+0

好点!编辑。 – 2010-08-13 11:05:57

+0

@Bobby - 现在它检查一个关闭的孩子*类,而不是父母:) – 2010-08-13 11:07:13

-1

如果你只是想对符合条件的,那么你的一些元素进行操作可以使用:

$('.classUpper.closed') 
+0

这不是提问者正在使用的结构,正如Nick指出的那样(这是一个非常容易混淆的问题!)。我认为结构是这样的:

2010-08-13 11:29:13

相关问题