2010-09-09 8 views

Antwort

48

Sie können dies nur tun, um ein Element zu testen, wenn es das erste Kind ist: $(this).is(':first-child'). Andere Selektoren wie :last-child würden auch funktionieren.

+4

Das wird für alles "wahr" zurückgeben. ': First' würde prüfen, dass es das erste Element im jQuery-Set ist. Ich glaube, Sie könnten wollen:: first-child' – gnarf

+11

Auch,' .not (': first -child ') 'gibt immer noch einen jQuery-Satz zurück, nicht einen booleschen ...' .is (': not (: first-child) ') '.... – gnarf

+2

Diese Lösung gibt zurück, wenn das Element" is "ist erstes Kind, als @WorkingHard nach Wissen fragte, wann "nicht" das erste Kind ist. Nicht zu erwähnen, dass im Grunde die ganze Antwort von @gnarf verschenkt wurde. Ich hätte mir gewünscht, dass @gnarf dies beantwortet hat und dass die SO-Nutzer nicht für eine falsche Antwort gestimmt haben (sie hatte mindestens 3 Punkte, wenn alles falsch war). –

4

Wenn Sie möchte alles außer dem ersten Kind auswählen, so geht das:

$('#some-parent').children().not(':first') 
0

jQuery .not()

$(this).not(':first'); 
+1

': first' ist nicht das gleiche wie ': first-child' und die Verwendung von' .not (': first') 'entfernt * das': first'-Objekt aus dem Set. – user113716

27

Sie einfach für seine .index() Position (relativ zu den Geschwister) fragen.

$(this).index(); // returns a zero based index position 
+5

Interessanterweise wird '.index()' '0' für das erste Kind zurückgeben, was falsch ist, und alles andere ist wahr, also wird' .index() 'tatsächlich für alles außer dem ersten Kind als wahr zurückgeben. .. Perfekte Antwort – gnarf

+1

Ich denke, es ist eher eine Nebenwirkung von .index(), aber nette Beobachtung in der Tat. –

+0

Nicht sicher, ob ich einen Fehler in jQuery sehe, aber ich habe etwas, parentDiv.parent ('td'), die ich in Firebug sehen kann enthält 1 Element. parentDiv.parent ('td'). size() ist 1, aber parentDiv.parent ('td'). index() gibt -1 zurück. Wer weiß warum? –

3

Überprüfen Sie den Index

$(this).index() == 0 // is first 
3

Außerdem können Sie überprüfen, ob $(this).prev().length definiert ist, wie in:

if (!$(this).prev().length){ //This means $(this is the first child 
    //do stuff 
} 
1

Keep it simple, verwenden Sie das DOM


$("li").click(function(e) { 

    if (this.previousSibling != null) 
    { 
     /* do something */ 
    } 

}); 
+0

Sicher meinst du 'this.previousSibling' nicht' $ (this).vorherigesSibling' ... – gnarf

0
$("li").click(function(e) { 
    if ($(this).index != 0) 
    { 
     /* do something */ 
    } 
}); 
Verwandte Themen