jquery seleccionar el primer niño de la clase de un padre de familia con clase

Cómo puedo seleccionar sólo el primer hijo de una clase particular de un padre con una clase en particular para los fines de clone()?

<div class="sector_order">

    <div class="line_item_wrapper">
    SELECT THIS DIV
    </div>

    <div class="line_item_wrapper">
    NOT THIS DIV
    </div>

</div>

Estoy intentando así:

var form1 = $(this)
    .parents('.sector_order')
    .children('.line_item_wrapper')
    .children().clone(true)

y obtener tanto el interior de los div con la clase line_item_wrapper, pero me da un objeto vacío cuando intento con esta adición:

children('.line_item_wrapper :first')

Gracias!

InformationsquelleAutor 1252748 | 2012-11-15

4 Kommentare

  1. 44

    Sus problemas es que el selector está mal, en un par de maneras:

    parents() devuelve uno, dos o muchos de los elementos que coincidan con el selector que se le pasan al método; se limite a la primera pareados uso de los elementos de closest() (que devuelve uno, o no, los elementos que coinciden con el pasado-en el selector).

    De su primer uso de la children() método devuelve ambos elementos, ya que tanto coincide con la proporcionada selector y tener la clase de line_item_wrapper; es necesario indicar explícitamente cuál de los dos desea, puede utilizar el :first selector (o el first() método), o la :first-child selector.

    La segunda llamada a la children() método busca que los niños del primer elemento coincidente por el selector, que no parecen a querer.

    De todos modos, si debe utilizar la matriz (a partir de la misma $(this) elemento):

    var form1 = $(this).closest('.sector_order').find('.line_item_wrapper:first').clone(true);

    O:

    var form1 = $(this).closest('.sector_order').find('.line_item_wrapper').first().clone(true);

    O:

    var form1 = $(this).closest('.sector_order').find('.line_item_wrapper:first-child').clone(true);

    O, francamente, un enfoque más sencillo (pero esto no hace prescindir de la clase principal-nombre de verificación):

    var form1 = $(this).prevAll('.line_item_wrapper:last');

    O:

    var form1 = $(this).siblings('.line_item_wrapper').eq(0);

    Referencias:

    • Esto es extremadamente útil. Muchas gracias por tomarse el tiempo para explicar esto.
    • Eres muy bienvenido, me alegra haber sido de ayuda! =)
  2. 12

    Estás pasando un selector no válido para children().
    En lugar de

    .children('.line_item_wrapper :first')

    intentar

    .children('.line_item_wrapper').first()
  3. 2

    Uso :first-child

    var form1 = $(this).closest('.sector_order').find(':first-child');

    O .first()

    var form1 = $(this).closest('.sector_order').find('.line_item_wrapper').first();

Kommentieren Sie den Artikel

Bitte geben Sie Ihren Kommentar ein!
Bitte geben Sie hier Ihren Namen ein

Pruebas en línea