2012-04-12 9 views
1

Brauchen Sie ein wenig Hilfe von Ihrem Typ. Ich überprüfe, wo das Element ist. Erster if-Anweisung funktioniert, aber sonst, wenn nicht ... Ich habe versucht, auch so etwas wie diese, aber es funktioniert nicht:Prev check mit Jquery

else if(($('.current').prev().hasClass('green')){ 
    alert('Green is Before the current Picture'); 
    } 

Ich möchte dies tun: Wenn grün vor „aktueller“ Alarmklasse "Grün ist vor dem aktuellen Bild". Kann mir jemand helfen? Vielen Dank!

Hier ist Fiddle.

ich diesen Code haben:

var $green=$('.green:not(:nth-child(6))'); 

$('.greencontroll').click(function(){ 

    if($green.next($('.current').length)){ 
    alert('Green is After the current Picture'); 
} 

    else if($green.prev($('.current').length)){ 
     alert('Green is Before the current Picture'); 
     } 
+0

Grün ist nach dem Bild in Ihrem jsFiddle, deshalb heißt es nicht, dass es vor dem Bild ist ... –

+0

Ich weiß, wenn ich versuche, zweimal auf der nächsten Folie zu klicken, wird immer noch alarmieren, dass "Grün Nach dem aktuellen Bild ist "Das ist das Problem ... –

Antwort

2

Unter der Annahme, die Elemente Geschwister sind:

var $elements = $('.current').siblings().andSelf(); 

var curIndex = $elements.index(".current"); 
var greenIndex = $elements.index(".green"); 

if(curIndex > greenIndex){ 
    // before 
} 

Das Problem mit Ihrem Code ist, dass prev bekommt nur die Geschwister unmittelbar vor zu dem Element, nicht alle vorherigen Geschwister.

+1

+1, wo kann ich mehr über' andSelf() finden; 'im Detail? –

+0

@SheikhHeera die jquery docs http://api.jquery.com/andSelf/ obwohl im Rückblick denke ich '.parent(). Children()' könnte etwas effizienter sein, nicht sicher. –

+0

Danke für den Link und beraten. –