Ответ 1
Ваши проблемы в том, что ваш селектор ошибочен, несколькими способами:
parents()
возвращает один, два или несколько элементов, которые соответствуют селектору, переданному методу; чтобы ограничить себя элементом первого соответствия, используйте closest()
(который возвращает один или нет элементов, которые соответствуют селектору передачи).
Ваше первое использование метода children()
возвращает оба элемента, поскольку оба они соответствуют указанному селектору и имеют класс line_item_wrapper
; вам нужно явно указать, какой из двух вы хотите, вы можете либо использовать селектор :first
(или метод first()
), либо селектор :first-child
.
Второй вызов метода children()
находит дочерние элементы первого элемента, которые соответствуют селектору, который вам кажется не нужен.
В любом случае, если вы должны использовать родителя (начиная с того же элемента $(this)
):
var form1 = $(this).closest('.sector_order').find('.line_item_wrapper:first').clone(true);
Или:
var form1 = $(this).closest('.sector_order').find('.line_item_wrapper').first().clone(true);
Или:
var form1 = $(this).closest('.sector_order').find('.line_item_wrapper:first-child').clone(true);
Или, честно говоря, более простой подход (но это не распространяется на проверку родительского класса):
var form1 = $(this).prevAll('.line_item_wrapper:last');
Или:
var form1 = $(this).siblings('.line_item_wrapper').eq(0);
Литература: