jquery选择带有父类的第一个孩子与类

jquery选择带有父类的第一个孩子与类

问题描述:

我如何才能仅为clone()的目的选择特定班级的父母的特定班级的第一个孩子?jquery选择带有父类的第一个孩子与类

<div class="sector_order"> 

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

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

</div> 

我想是这样的:

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

,并得到与类line_item_wrapper两个内div但我得到一个空的对象,当我尝试用这种添加:

children('.line_item_wrapper :first') 

谢谢!

你的问题是,你的选择我在以下几种方式中错误:

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); 

参考文献:

+0

这是非常有帮助的。非常感谢您花时间解释这一点。 – 1252748

+0

你非常欢迎;我很高兴得到了帮助! =) –

试试这个:

var $firstDiv = $(".sector_order > .line_item_wrapper:eq(0)"); 

这将让你的sector_order第一嫡系与类line_item_wrapper

Example fiddle

你传递一个无效的选择器children()。 而不是

.children('.line_item_wrapper :first') 

尝试

.children('.line_item_wrapper').first() 

使用:first-child

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

.first()

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