2013-12-05 2 views
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/подсчет количества Чайлдс в DIV с JQuery

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

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

+1

в пределах '$ .each',' this' является экземпляром элемента селектора .. . будет иметь длину '1' – charlietfl

ответ

1

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

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

Обновлено DEMO


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

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

0

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

$(this).length 

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

$(this).children().length 
+0

' this' является элементом DOM. '$ (this)' является объектом jQuery. Но '$ (this) .children()' также возвращает объект jQuery, поэтому я не понимаю аргумент * «Поскольку контекст (это) является объектом jQuery» * –

+0

Вы правы - я должен был быть яснее. Просто пытаюсь показать, что детей нужно назвать методом - я вижу, вы объяснили это ниже. –

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