2015-03-22 2 views
1

Вот моя проблема.jQuery - Стиль по порядку появления элемента внутри другого элемента?

HTML

<ul id="content"> 
     <li id="item1"> 
     <ul id="menu"> 
      <li id="menu-item1"> 
      <ul class="sub-menu"> 
       <li>........</li></ul></li> 
.................................................... 
      <li id="menu-item10"> 
      <ul class="sub-menu"> 
       <li>........</li></ul></li> 
     </ul></li> 
    </ul> 

Как я могу изменить CSS верхней части каждой уль подменю # следующими?

1-sub menu top: -8px 
2-sub menu top: -40px 
3-sub menu top: -72px 
step = -32px 
and so on ... 
10-sub menu top: - ###px 

Извините, ребята, я нашел свою синтаксическую ошибку .... вот мой код. Я буду признателен, если у вас есть более одного;)

$('ul.sub-menu').each(function() { 
    $(this).css('top', (-8 + $(this).index('ul.sub-menu') * -32)); 
}); 
+0

ID элемента должен быть уникальным ... так что используйте 'суб-menu' как класс –

+0

@ArunPJohny .. жаль, что , но на самом деле на моем сайте они являются классами;) – Xon

+1

try 'var $ subs = $ ('# content .sub-menu'); $ subs.css ('top', function (i) { return - (8 + (i * 32)) }) ' –

ответ

0

Существует, как это может быть сделано с помощью CSS:

ul#menu{ 
 
    margin-top:-24px; 
 
} 
 
ul#sub-menu{ 
 
    margin-top:32px; 
 
}
<ul id="menu"> 
 
     <li id="menu-item1"> 
 
      <ul id="sub-menu"> 
 
       <li>........</li> 
 
      </ul> 
 
     </li> 
 

 
     <li id="menu-item2"> 
 
      <ul id="sub-menu"> 
 
       <li>........</li> 
 
      </ul> 
 
     </li> 
 
    
 
     <li id="menu-item3"> 
 
      <ul id="sub-menu"> 
 
       <li>........</li> 
 
      </ul> 
 
     </li> 
 
</ul>

1

Вы можете использовать следующую функцию в документе готового метода, подобный

jQuery('ul#content ul[id=sub-menu]').each(function(){ 
    jQuery(this).css('top', jQuery('>li',jQuery(this).parent().parent()).index(jQuery(this).parent())*-32-8) 
}); 

Примечание: его комплекс, но отлично работает, проверьте здесь http://jsfiddle.net/siddhapura/reud3Lre/

1

Попробуйте это не так же, как вы хотели Fiddle

var len = $('ul').length; 
var top = 1; 
$('.sub-menu').each(function() { 


$(this).css({ 
    top: top 
}) 
top = top + top +8 
}) 
Смежные вопросы