2016-06-30 5 views
-1

Ich habe 15 Elemente in einer Reihe mit der gleichen Klasse zum Beispiel class="element" Ich möchte eine jQuery jede Schleife zu ihnen Klassen wie links-el und rechts-el hinzufügen. Jetzt habe ich einen Code wie folgt aus:javaScript-Funktion, macht Code trocken

jQuery('.element').eq(0).addClass('left-el'); 
jQuery('.element').eq(1).addClass('right-el'); 
jQuery('.element').eq(2).addClass('left-el'); 
jQuery('.element').eq(3).addClass('right-el'); 

bis 15. Wanna trocken machen, aber nicht wissen, wie. Vielleicht ist das eine blöde Frage, aber ich kann nicht für eine Stunde reparieren. Versucht, etwas wie folgt aus:

jQuery('.ui-slider .ui-slider-handle').each(function(i, item){ 

    var left = 'ui-slider-handle-left'; 
    var right = 'ui-slider-handle-right'; 

    jQuery('.ui-slider .ui-slider-handle').eq(i).addClass(i == 0 ? left : right+i); 
}); 
+2

Tipp: 'i% 2' ... – deceze

Antwort

5

jQuery hat :odd und :even Selektoren, die ermöglichen, Code wie bei Ihnen, wie dies zu tun:

jQuery('.element:even').addClass('left-el'); 
jQuery('.element:odd').addClass('right-el'); // Or the other way around 
+0

Super funktioniert! Danke, aber ich möchte auch eine Schleife sehen;) – pwnz22

+0

Ich dachte ursprünglich daran, dir einen Loop-Weg zu geben, aber es ist ineffizient und ich wollte nicht, dass du es siehst: D – Brian

+1

@ pwnz22 als Schleife: 'jQuery (' .element '). jedes (Funktion (i) { \t $ (dieses) .addClass (i & 1?' rechts-el ':' links-el '); }); ', aber wie Brian sagte, sollte seine Antwort sein bevorzugt werden. – Thomas

1

diese Art und Weise tun,

$(".element:even").addClass('left-el'); 
$(".element:odd").addClass('right-el'); 
1
jQuery('.element').each(function(i){ 
var left = 'ui-slider-handle-left', 
    right = 'ui-slider-handle-right'; 

    if (i%2 === 0) { 
     $(this).addClass(left); 
    } else { 
     $(this).addClass(right); 
    } 
});