如何使用jQuery选择器来影响同一个类的不同兄弟?

时间:2011-04-07 21:26:36

标签: jquery css

我正在尝试使用Length来计算具有相同类名的一系列div中的图像数量,但我不能让jQuery单独查看每个DIV。

console.log($('.channel_titles_art').each( function(){
        console.log($('.channel_titles_art img').length);
      })
);

例如,我想输出:div one:4 images,div two:2 images,div three:12 images ...

但是它使用channel_titles_art类计算所有div的子图像的总数,并重复多次的数字(对于三个div“18个图像”重复三次)

有没有办法分别迭代每个div?

3 个答案:

答案 0 :(得分:6)

你必须使用this

$('.channel_titles_art').each( function(){
    console.log($('img', this).length);
})

显示您想要的内容:

$('.channel_titles_art').each( function(){
    var amt_of_images = $('img', this).length;
    console.log(this, 'has '+amt_of_images+' images');
})

这是fiddle :-)

答案 1 :(得分:2)

是。将$('.channel_titles_art img')转换为$('img', this)$(this).find('img')

当原始匹配器匹配所有.channel_titles_art内的所有图像时,这些将查找当前元素与.channel_titles_art匹配的上下文中的所有图像。

使用.size()代替.length进行查找(来自Neal的复制粘贴)以显示备选方案的示例。

$('.channel_titles_art').each( function(){
    console.log($(this).find('img').size());
})

$('.channel_titles_art').each( function(){
    var amt_of_images = $(this).find('img').size();
    console.log(this, 'has '+amt_of_images+' images');
})

fiddle(再次滥用尼尔的好作品)。

答案 2 :(得分:2)

烨。你要求每个元素都有一个channel_titles_art类,然后询问each块中所有中的所有图像。你需要指定。您可以使用this作为对您正在使用的当前项目的引用,然后使用parent函数的$字段指定从中开始工作。

console.log($('.channel_titles_art').each( function(){
        console.log($('img', this).length);
      })
);