2014-10-30 4 views
-3

У меня есть сценарий в коробке-в-коробке образом, если последовательность операторов:Для цикла в условном операторе в Javascript

if($(selected).children('li').children('ul')){ 
    selected = $(selected).children('li').children('ul'); 
    $(selected).attr('data-level','3'); 

    if($(selected).children('li').children('ul') ){ 
    selected = $(selected).children('li').children('ul'); 
    $(selected).attr('data-level','4'); 

    if($(selected).children('li').children('ul') ){ 
     selected = $(selected).children('li').children('ul'); 
     $(selected).attr('data-level','5'); 

     if($(selected).children('li').children('ul') ){ 
     selected = $(selected).children('li').children('ul'); 
     $(selected).attr('data-level','6'); 

     if($(selected).children('li').children('ul') ){ 
      selected = $(selected).children('li').children('ul'); 
      $(selected).attr('data-level','7'); 
     } 
     } 
    } 
    } 
} 

Я просто удивляюсь, как справиться с этим в простой цикл. Спасибо за любую помощь.

+0

Все условия всегда будут проходить в этом фрагменте кода. Вам нужно проверить 'length' возвращаемого объекта jQuery. – Teemu

+0

Ваш код не имеет смысла. Где первый «выбранный» для начала? Почему вы можете просто сгруппировать все изменения «уровня данных» в одном выражении if? Аг, смущенный Тонбриджем. – Andy

+1

Примечание для проголосовавших: факт, что код не имеет для вас никакого смысла, не означает, что вы полностью поняли вопрос. Downvoting не должно быть так просто .. – YahyaE

ответ

1

Я думаю, вы хотите что-то вроде этого:

$('ul').attr('data-level', function() { 
 
    return $(this).parents('ul').length; 
 
});
[data-level="0"] { 
 
    color: blue; 
 
} 
 
[data-level="1"] { 
 
    color: green; 
 
} 
 
[data-level="2"] { 
 
    color: red; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 
 
<ul> 
 
    <li>1</li> 
 
</ul> 
 
<ul> 
 
    <li> 
 
     <ul> 
 
      <li>2</li> 
 
     </ul> 
 
    </li> 
 
</ul> 
 
<ul> 
 
    <li> 
 
     <ul> 
 
      <li> 
 
       <ul> 
 
        <li>3</li> 
 
       </ul> 
 
      </li> 
 
     </ul> 
 
    </li> 
 
</ul>

+1

Благодарим вас за ответ. – YahyaE

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