2016-01-08 4 views
0

Я пытаюсь предупредить, сколько детей находится в div с классом «.child». Пример: Есть пять «.child» внутри div. Я не уверен, почему моя петля для этого не работает, и я понимаю, что есть лучшие способы, но я тренируюсь для циклов. Благодарю. Проблему можно найти здесь http://jqexercise.droppages.com/#page_0013_JQuery «для» цикла, чтобы узнать, сколько детей

for (var i = 1; i < 100; i++){ 
    if($(".child:nth-child(i)") == true){  
    } 
    else { 
     alert(i); 
     break;  
    } 
} 
+1

Из-за 'javscript' tag: 'document.querySelectorAll (". child "). length' – Andreas

ответ

1

Вы можете получить количество .child в DIV, как следующее.

var num = $('div').find('.child').length; 
 
console.log(num);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div> 
 
    <span class="child">Child</span> 
 
    <span class="child">Child</span> 
 
    <span class="child">Child</span> 
 
    <span class="child">Child</span> 
 
    <span class="child">Child</span> 
 
    <span class="child">Child</span> 
 
</div>

Update: Если вы хотите использовать для цикла, то вы можете сделать это, как показано ниже, используя jqueryeq() функцию.

for (var i = 0; i < 100; i++) { 
    if ($('.child').eq(i).length) { 

    } 
    else { 
     alert(i); 
     break; 
    } 
} 

Вы использовали i как строку. Используя nth-child(), сделайте это, как показано ниже.

for (var i = 1; i < 100; i++) { 
    if ($(".child:nth-child(" + i + ")").length) { 

    } 
    else { 
     alert(i-1); 
     break; 
    } 
} 
+0

Конечно, я просто экспериментировал с циклами «для», хотя это и не имеет смысла. – Chris

+1

См. Мой обновленный ответ @Chris – Azim

1

Другой способ:

alert($('div .child').length); 
+0

Конечно, я просто экспериментировал с циклами «для», хотя это и не имеет смысла. – Chris

+0

Да, 'for' loop не является оптимальной вещью в вашем случае – RomanPerekhrest

1
var intChildrenCount = $("div .child").length; 
+0

Наверняка, я просто экспериментировал с циклами« для », хотя это и не имеет смысла. – Chris

1

i внутри, если условие является строкой, а не переменной, сделайте следующее:

if ($(".child:nth-child(" + i + ")") == true) 
+0

Ты гений. Хотя он только предупреждает «1», даже если ответ должен быть равен 5. – Chris

+1

См. Ответ на вопрос @ azim mate –

1
var arrChildren = $("div .child"); 
$.each(arrChildren,function(){ 
    // Here you will get child's HTML one by one 
    console.log($(this).html()); 
}); 
+0

, похоже, не работает ... – Chris

+1

В чем проблема в приведенном выше коде? –

+0

Прошу прощения, я не понимал, что это console.log. Спасибо! – Chris

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