¿Cómo saber si el elemento actual no es el primer hijo?

Se debe trabajar con $(this), por ejemplo:

$("li").click(function(e) {
    if (/* $(this) is not the first-child */)
    {
        /* do something */
    }
});
InformationsquelleAutor James | 2010-09-09

9 Comentarios

  1. 57

    Usted puede hacer esto sólo para la prueba de un elemento, si es el primer hijo: $(this).is(':first-child'). Otros selectores como :last-child sería demasiado trabajo.

    • Que volverá true para todo… :first sería comprobar que es el primer elemento en el jQuery conjunto, yo creo que usted podría querer :first-child
    • También, .not(':first-child') regresará jQuery conjunto, no un booleano… .is(':not(:first-child)')….
    • Esta solución es devolver si el elemento «es» el primer niño cuando @WorkingHard preguntó para saber cuándo el «no es» el primer hijo. No mencionar que, básicamente, todo lo que la respuesta estaba regalando por @gnarf. Me hubiera gustado que @gnarf respondió a esta, y que ASÍ los usuarios no han votado por una respuesta incorrecta (había al menos 3 puntos cuando todo era malo).
    • Convertirlo en «no» es una cuestión de agregar el ! operador.
    • encogimiento de hombros te comento para que él pudiera hacer su respuesta mejor (o al menos correcto 😉 )
    • Btw, este se cruza con el resultado actual de set en contra de TODOS primer hijo de los elementos en el documento 🙂

  2. 30

    Usted puede simplemente pedir su .index() posición (relativa a sus hermanos).

    $(this).index();   //returns a zero based index position
    • Curiosamente, .index() volverá 0 para el primer hijo, lo cual es falso, y otra cosa es verdadera, por lo tanto, .index() en realidad devolverá true para nada, pero el primer hijo… la respuesta Perfecta
    • Creo que es más de un efecto secundario de .index(), pero agradable de observación, de hecho.
    • No estoy seguro si estoy viendo un error en jQuery, pero tengo algo que no parentDiv.de los padres(‘td’), que puedo ver en firebug contiene de 1 elemento. parentDiv.de los padres(‘td’).size() es 1, pero parentDiv.de los padres(‘td’).index() devuelve -1 . Alguien sabe por qué?
    • Esto es realmente una gran manera para poner a prueba si el elemento no está en primer lugar. gracias! if ( $(this).index() ) { //a continuación, no es la primera }
  3. 4

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

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

    También, usted puede comprobar si $(this).prev().length se define, como en:

    if (!$(this).prev().length){ //This means $(this is the first child
        //do stuff
    }
    • Muy buena creo que la mayoría de los legible y coincide con otras implementación de la mina. Alternativa a la longitud de su uso .size()
  5. 1

    Keep it simple, use el DOM

    
    $("li").click(function(e) {
    
        if (this.previousSibling != null)
        {
            /* do something */
        }
    
    });
    • Seguramente te refieres a this.previousSibling no $(this).previousSibling

Dejar respuesta

Please enter your comment!
Please enter your name here