2015-12-10 3 views
0

В настоящее время я пытаюсь показать количество изображений в галерее (например, в этой галерее есть «x» изображения). На каждой странице есть несколько галерей, поскольку они встроены в сообщения в Wordpress.Подсчет определенных дочерних элементов в родительском div

На моем локальном хосте я могу получить его, чтобы показать счет, но он учитывает каждое изображение на странице, как если бы он не ограничивался родительским div для подсчета.

Любой вход будет массово оценили - http://jsfiddle.net/fvoLaad1/2/ или код ниже:

EDIT: решаемые благодаря @ Mohamed-Юсефа и @tom Миллард - рабочая версия здесь http://jsfiddle.net/kuLsjLgg/

JQuery

jQuery(function($) { 
    $('.iso-post').each(function(i) { 
    var n = $('.gallery-item').length; 
    $(".image-count").text("There are " + n + " images in this gallery."); 
    }); 
}); 

HTML

<li class="iso-post"> 
    <span class="image-count"></span> 
    <div class="post-content"> 
     <div class="gallery"> 
      <figure class="gallery-item">IMG</figure> 
      <figure class="gallery-item">IMG</figure> 
      <figure class="gallery-item">IMG</figure> 
     </div> 
    </div> 
</li> 

<li class="iso-post"> 
    <span class="image-count"></span> 
    <div class="post-content"> 
     <div class="gallery"> 
      <figure class="gallery-item">IMG</figure> 
      <figure class="gallery-item">IMG</figure> 
      <figure class="gallery-item">IMG</figure> 
      <figure class="gallery-item">IMG</figure> 
      <figure class="gallery-item">IMG</figure> 
     </div> 
    </div> 
</li> 
+0

Вы забыли включить jQuery в свою скрипку. – j08691

+0

Используйте '$ (this) .find ('. Targetitem'). Length' и для изображения count div тоже. Вы должны найти его в контексте селектора на каждой итерации. – Jai

ответ

2

вам нужно перебрать каждую галерею, чтобы получить количество изображений в ней

jQuery(function($) { 
    $('.gallery').each(function(){ 
    var n = $(this).find('.gallery-item').length; 
    $(this).closest('.iso-post').find(".image-count").text("There are " + n + " images in this gallery."); 
    }); 
}); 

Working Demo

, чтобы получить все длины изображения просто использовать

$('.gallery-item').length;

1

Чтобы найти детей, вам необходимо использовать this для ссылки на индекс текущего контура и find.

jQuery(function($) { 
    $('.iso-post').each(function(i) { 
    var n = $(this).find('.gallery-item').length; 
    $(this).find(".image-count").text("There are " + n + " images in this gallery."); 
    }); 
}); 
+0

Спасибо, человек, отлично работает! –

Смежные вопросы