2011-04-07 77 views
3

我試圖讓Length來計算一系列具有相同類名的div的圖像數量,但我無法讓jQuery單獨查看每個DIV。如何使用jQuery選擇器來影響同一類的不同兄弟?

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

例如,我想它想的輸出:DIV之一:4張圖片,DIV二:2個圖像,DIV三:12張圖片...

而是它計算的總數圖像是使用channel_titles_art類的所有div的子圖像,並重復多次(對於三個div「18圖像」重複三次)

是否有一種方法可以分別遍歷每個div?

回答

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 :-)

+0

謝謝!我一直把頭撞在這張桌子上。 – nipponese 2011-04-07 21:50:30

+0

哈哈沒問題^ _ ^隨時 – Neal 2011-04-07 21:50:50

+1

只是爲了笑:'$(this).find('img')'可能比'$('img',this)'稍微快一些',因爲後者是使用前任的。如果使用後者,這將導致更多的函數調用。再次 - 如果沒有真正的微型優化需求,請做最清晰的事情。 – 2011-04-07 22:09:54

2

是。將$('.channel_titles_art img')轉換爲$('img', this)$(this).find('img')

這些將會找到當前匹配.channel_titles_art的當前元素的上下文中的所有圖像,而原匹配器匹配所有.channel_titles_art內的所有圖像。

查找示例(從Neal複製粘貼)與.size()而不是.length以顯示替代方法。

$('.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(再次濫用尼爾的出色工作)。

+1

這是不正確的。 OP如何做到這一點? '(this)。('img')'不正確jQuery – Neal 2011-04-07 21:32:04

+0

絕對正確,檢查並修復。謝謝!我似乎總是忘記添加查找。 – 2011-04-07 21:35:36

+0

@Aleski你不應該從別人那裏取消答案.... – Neal 2011-04-07 21:48:28

2

是。你要求它爲每一個channel_titles_art類的單個元素,然後要求在each塊內的所有內的所有圖像。你需要指定。您可以使用this作爲您正在使用的當前項目的參考,然後使用$函數的parent字段指定以此作爲工作。

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