I vostri problemi è che il selettore i s errato, in alcuni modi:
parents()
restituisce uno, due o più elementi che corrispondono al selettore passato al metodo; per limitarti all'elemento con la prima corrispondenza utilizzare closest()
(che restituisce uno o nessun elemento che corrisponde al selettore passato).
Il vostro primo utilizzo del metodo children()
restituisce entrambi gli elementi, dal momento che entrambi corrispondere il selettore in dotazione e hanno la classe di line_item_wrapper
; è necessario indicare esplicitamente quale dei due desideri, è possibile utilizzare il selettore :first
(o il metodo first()
) o il selettore :first-child
.
La seconda chiamata al metodo children()
trovano i figli del primo elemento di pari passo con il selettore, che non si sembrano volere.
In ogni caso, se è necessario utilizzare il genitore (a partire dallo stesso $(this)
elemento):
var form1 = $(this).closest('.sector_order').find('.line_item_wrapper:first').clone(true);
Oppure:
var form1 = $(this).closest('.sector_order').find('.line_item_wrapper').first().clone(true);
Oppure:
var form1 = $(this).closest('.sector_order').find('.line_item_wrapper:first-child').clone(true);
Oppure, francamente, un approccio più semplice (ma questo non fa uso del controllo del nome della classe genitore):
var form1 = $(this).prevAll('.line_item_wrapper:last');
Oppure:
var form1 = $(this).siblings('.line_item_wrapper').eq(0);
Riferimenti:
fonte
2012-11-15 21:35:02
Questo è estremamente utile. Grazie mille per aver trovato il tempo per spiegarlo. – 1252748
Siete i benvenuti; Sono felice di essere stato d'aiuto! =) –