2014-10-01 4 views
3

У меня есть простая структура HTML с элементами div. Я хочу найти сумму значений у детей div s каждого родителя div, но только если у родителя есть не менее трех детей.Сумма div, когда родительский div имеет более трех дочерних div

Это то, что я пытался, но он получает сумму от каждого DIV:

var sum = 0; 
 
$("div > div > div").each(function() { 
 
    sum += parseInt($(this).text(), 10); 
 
}); 
 

 
console.log(sum);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div> 
 
    <div> 
 
     <!-- want to calculate this ---> 
 
     <div>1</div> 
 
     <div>1</div> 
 
     <div>1</div> 
 
     <div>1</div> 
 
    </div> 
 
    <div> 
 
    <!-- don't want to calculate this ---> 
 
     <div>1</div> 
 
     <div>1</div> 
 
     <div>1</div> 
 
    </div> 
 
    <div> 
 
     <!-- want to calculate this ---> 
 
     <div>1</div> 
 
     <div>1</div> 
 
     <div>1</div> 
 
     <div>1</div> 
 
    </div> 
 
</div>

Таким образом, в приведенном выше примере, я бы Выведите ответ 8.

ответ

5

Вы можете проверить каждый из этих разделов, если у его родителей более 3 детей:

var sum = 0; 
 
$("div > div > div").each(function() { 
 
    if($(this).parent().children('div').length >3){ 
 
    sum += parseInt($(this).text(), 10); 
 
    } 
 
}); 
 

 
console.log(sum);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div> 
 
    <div> 
 
     <!-- want to calculate this ---> 
 
     <div>1</div> 
 
     <div>1</div> 
 
     <div>1</div> 
 
     <div>1</div> 
 
    </div> 
 
    <div> 
 
    <!-- don't want to calculate this ---> 
 
     <div>1</div> 
 
     <div>1</div> 
 
     <div>1</div> 
 
    </div> 
 
    <div> 
 
     <!-- want to calculate this ---> 
 
     <div>1</div> 
 
     <div>1</div> 
 
     <div>1</div> 
 
     <div>1</div> 
 
    </div> 
 
</div>

+0

мне придется ждать еще 7 минут, прежде чем я могу принять ваш ответ, и я не могу upvote либо: S – user2019037

+0

Вы можете сделать это еще более конкретным с '.children ('div')' - таким образом, другие теги, которые там находятся, не учитываются. В противном случае я собирался опубликовать этот точный ответ. –

+0

@SurrealDreams, да, хороший момент, спасибо :) – Banana

0

дать родителю DIVS класс, давайте назовем его .parent сейчас:

var sum = 0; 
$(".parent").each(function() { 
    if($(this).children('div').length>3){ 
     $(this).children('div').each(function(){ 
      sum += parseInt($(this).text(), 10); 
     }); 
    } 
}); 

console.log(sum); 
Смежные вопросы