计数元素之间的语法混淆

时间:2012-07-26 15:26:59

标签: javascript jquery syntax counting

$(this).siblings()返回:

[<section style class=​"white">​…​</section>​
, <section style class=​"white">​…​</section>​
, <section style=​"display:​ none">​…​</section>​
, <section style=​"display:​ none">​…​</section>​
, <section style=​"display:​ none">​…​</section>​
, <section style=​"display:​ none">​…​</section>​
, <section style=​"display:​ none">​…​</section>​]

所以有7个部分,其中两个(当然)有类white。隐藏parent()部分后,我将无法再使用该代码:

var hidden = ($(this).siblings().filter(':visible').length);

要查看有多少可见,我需要计算白色的类。很长一段时间后,我能够让它发挥作用:

var hidden=0;
$(this).siblings().each(function(){
    if ($(this).hasClass('white')) {hidden++;};
});

为什么我必须循环遍历每个兄弟,不能使用以下一个或另一行来计算类'white'的那些:

var hidden = ($(this).siblings().filter(':white').length); or
var hidden = ($(this).siblings().filter('white').length);

var hidden = ($(this).siblings().hasClass('white').length);

var hidden = ($(this).siblings().is(':white').length); or
var hidden = ($(this).siblings().is('white').length);

1 个答案:

答案 0 :(得分:4)

为什么要经历.filter().hasClass().is()和循环问题? Can't you use .sibling()'s argument to filter the siblings instead并获得“白色”的那些?

$(this).siblings('.white').length