2011-04-06 11 views
1

다음과 같은 구조가 있습니다.임의의 클래스를 링크리스트에 추가하는 방법

<ul id="dyn_nav"> 
    <li><a href="#">Home</a></li> 
    <li><a href="#">Services</a></li> 
    <li><a href="#">Contact</a> 
     <ul class="submenu"> 
      <li><a href="#">Home</a></li> 
      <li><a href="#">Services</a></li> 
      <li><a href="#">Contact</a></li> 
     </ul> 
    </li> 
</ul> 

첫 번째 수준의 li (ul # dyn_nav> li)은 주어진 목록에서 임의의 클래스를 가져와야합니다.

수업은 내가 역동적 인 컬러가 해결되지 않은이 메뉴를 만들고 싶어

... 등, 파랑, 녹색, 마젠타, 시안 색, 빨간색입니다.

마찬가지로 첫 번째 메뉴 색상은 녹색이고 다른 것은 파란색입니다. 이것은 단지 나의 아이디어 일뿐입니다.

jQuery하시기 바랍니다.

+0

lol! 이것은 Q & A 사이트 롤입니다! –

+0

@bolt 임의의 클래스를 추가하는 방법을 모른다. 그래서 아직 시도하지 않았다. –

답변

7
$(document).ready(function() { 
    var classes = ['blue', 'green', 'magenta', 'cyan', 'red']; 
    $('ul#dyn_nav>li').each(function(i) { 
     $(this).addClass(
      classes[Math.floor(Math.random()*classes.length)]); 
    }); 
}); 

나는 또한 스타일 시트에 ul#dyn_nav>li>a { color: inherit; }을 추가했다.

+0

일부 시간 클래스가 반복됩니다. ( –

+0

이 경우 6 개의 메뉴 항목과 5 개의 색상이 있으므로 적어도 하나는 반복되어야합니다. 최소한 항목 수만큼 클래스가 있다면 다음 방법을 사용할 수 있습니다. 그들을 무작위 순서로 셔플하고 차례대로 항목에 적용합니다. –

0

Dutow가 맞습니다. @Wazdesign : 당신은이 조각을 시도 할 수 있습니다 : 색상이 li에있는 링크에 영향을 미칠뿐 아니라 총알 할 수 있도록

function rand(){ return (Math.round(Math.random())-0.5); } 
    var colors = new Array('blue','yellow','red','green');//you can add more class here 
    var init = colors.sort(rand); 
    $('ul li').each(function(i,el){ 
    $(el).addClass(init[i]); 
    }); 
+0

나는 sort (rand)가 매우 좋은 생각이라고 생각하지 않는다; 정렬의 구현에 따라 무한 루프가 될 수 있습니다. –

관련 문제