2010-09-09 9 views

Respuesta

48

Puede hacerlo solo para probar un elemento si es el primer hijo: $(this).is(':first-child'). Otros selectores como :last-child también funcionarían.

+4

Eso devolverá 'true' para todo ...': first' comprobaría que es el primer elemento en el conjunto jQuery, creo que podría querer ': first-child' – gnarf

+11

Además,' .not (': first -child ') 'aún devolverá un conjunto jQuery, no un booleano ...' .is (': not (: first-child) ') '.... – gnarf

+2

Esta solución está volviendo si el elemento" es "el primer hijo cuando @WorkingHard pidió saber cuándo "no es" el primer hijo. Sin mencionar que, básicamente, toda la respuesta fue regalada por @gnarf. Me hubiera gustado que @gnarf respondiera esto, y que los usuarios de SO no hayan votado por una respuesta incorrecta (Tenía al menos 3 puntos cuando todo estaba mal). –

4

Si lo haría desea seleccionar todo excepto el primer hijo, esta es la forma de hacerlo:

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

jQuery .not()

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

': first' no es lo mismo que ': first-child', y usando' .not (': first') '* eliminará * el elemento': first' del conjunto. – user113716

27

Simplemente podría solicitar que su posición .index() (en relación con sus hermanos).

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

Curiosamente, '.index()' devolverá '0' para el primer hijo, que es falso, y cualquier otra cosa es verdadera, por lo tanto,' .index() 'en realidad devolverá verdadero para cualquier cosa que no sea el primer hijo. .. Respuesta perfecta – gnarf

+1

Creo que es más un efecto secundario de .index(), pero buena observación de hecho. –

+0

No estoy seguro de si estoy viendo un error en jQuery, pero tengo algo que parentDiv.parent ('td') que puedo ver en firebug contiene 1 elemento. parentDiv.parent ('td'). size() es 1, pero parentDiv.parent ('td'). index() devuelve -1. Alguien sabe por qué? –

3

Comprobar el índice

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

Además, se puede comprobar si se ha definido $(this).prev().length, como en:

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

que sea sencillo, utilice el DOM


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

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

}); 
+0

Seguramente quiere decir 'this.previousSibling' not' $ (this).previousSibling' ... – gnarf

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