计数元素之间的语法混淆

Syntax confusion between counting elements

本文关键字:语法 之间 元素      更新时间:2024-04-06

$(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);

为什么要经历.filter().hasClass().is()和循环的麻烦?难道你不能用.sibling()的参数来过滤兄弟姐妹并得到那些"白色"的吗?

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