2017-01-28 1 views
1

Ich möchte meine li-Elemente in meiner Navigation zählen und sie in vier Klassen aufteilen, um ihnen eine individuelle Rahmenfarbe zu geben.jQuery dividiere Elemente und füge Klasse hinzu

Es sollte wie folgt aussehen:

<ul> 
    <li class="red"></li> 
    <li class="yellow"></li> 
    <li class="green"></li> 
    <li class="blue"></li> 
    <li class="red"></li> 
    <li class="yellow"></li> 
    <li class="green"></li> 
    <li class="blue"></li> 
</ul> 

Natürlich habe ich es dynamisch mit jQuery wollen.

Ich habe versucht:

$('#navbar li').each(function(i) { 
    $(this).addClass('className-' + i); 
}); 

aber, dass Codezahl alle li-Elemente in meinem ul ..

Dank für die Hilfe!

Antwort

1

Sie können diese Klassen in einem Array speichern & Weisen Sie jedem li-Element eine Klasse zu, basierend auf dem Rest des Element-Index, geteilt durch 4 (i% 4).

var classNames=['red','yellow','green','blue']; 
 
$('li').each(function(i) { 
 
    $(this).addClass(classNames[i%4]); 
 
});
.red{ 
 
    color:red; 
 
    } 
 
.yellow{ 
 
    color:yellow; 
 
    } 
 
.green{ 
 
    color:green; 
 
    } 
 
.blue{ 
 
    color:blue; 
 
    }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<ul> 
 
    <li>One</li> 
 
    <li>Two</li> 
 
    <li>Three</li> 
 
    <li>Four</li> 
 
    <li>Five</li> 
 
    <li>Six</li> 
 
    <li>Seven</li> 
 
    <li>Eight</li> 
 
    <li>Nine</li> 
 
    <li>Ten</li> 
 
</ul>

+0

Vielen Dank, aber ich habe ein Untermenü und die Funktion sollte nur die li-Elemente an der ersten Tiefe zählen. –

+0

var classNames = ['rot', 'gelb', 'grün', 'blau']; $ ('# navbar ul'). Children ('li'). Jedes (Funktion (i) { $ (this) .addClass (classNames [i% 4]); }); Das funktioniert! –

Verwandte Themen