подсчитать количество детей в div с помощью jquery

0
<div class="post-content">
    <p>xxxxx</p>
</div>
<div class="post-content">
    <p>Test1</p>
    <p>Test2</p>
    <p>Test3</p>
</div>

$(document).ready(function () {
    $('.post-content').each(function () {
        //alert($(this).children.length);
        alert($(this).length);
        console.log($(this).html());
    });
});

http://jsfiddle.net/7cXKr/

Длина должна быть числом p детей постконтента. почему вывод неправильный?

В этом случае 1 и 3

  • 1
    в $.each this экземпляр элемента селектора ... будет иметь длину только 1
Теги:

3 ответа

1
Лучший ответ

children - это метод, вы должны называть его:

alert($(this).children().length);
//    call the method ^^

Обновлено DEMO


$(this).length всегда будет возвращать 1 потому что поскольку this элемент DOM, $(this) создает выделение с одним элементом.

0

Поскольку контекст (это) является объектом jQuery, а не

$(this).length

Вы можете использовать

$(this).children().length
  • 0
    this элемент DOM. $(this) является объектом jQuery. Но $(this).children() возвращает объект jQuery, поэтому я не понимаю аргумента «Поскольку контекст (это) является объектом jQuery»
  • 0
    Вы правы - мне следовало быть понятнее. Просто пытаюсь показать, что детей нужно вызывать как метод - я вижу, вы объяснили это лучше ниже.
0

Попробовать .children()

fiddle Demo

$(document).ready(function () {
    $('.post-content').each(function () {
        var count = $(this).children().length;
        alert(count);
    });
});


для нахождения только детей p длина
var count = $(this).children('p').length;


Если вы хотите включить внуков, также используйте .find()
Проблема с вашим кодом
alert($(this).length);

относится к элементу DOM, поэтому длина всегда будет равна 1

используйте $(this).children().length

Ещё вопросы

Сообщество Overcoder
Наверх
Меню