2013-03-19 50 views
2

我试着去走动一些div,但我似乎无法选择它们只是通过对象对象获取:无法选择第n个孩子的div

http://jsfiddle.net/kL3c8/1/

<div class="partnerGroupContent"> 
    <div class="column"> 
     <div class="sponsor">1</div> 
     <div class="sponsor">2</div> 
    </div> 
    <div class="column1"> 
     <div class="sponsor">3</div> 
     <div class="sponsor">4</div> 
    </div> 
</div> 

var rowCount = 2 

var myColumn = $('.partnerGroupContent:nth-child(2)') 

if (rowCount == 2) { 

$('.partnerGroupContent').after('<div class="partnerGroupContent2">' + myColumn + '</div>'); 

} 

赞赏任何帮助,谢谢!

回答

4

你串连一个jQuery反对一个字符串,它不会那样工作。并且您误解了:nth-child。这是一个过滤器的一组是nth子父元素的过滤器,所以你可能想要这个:

$('.partnerGroupContent > :nth-child(2)') 

而且

$('.partnerGroupContent').after(
    $('<div>', { 
     'class': 'partnerGroupContent2' 
    }).append(myColumn) //append the actual element 
        //don't concatenate strings 
) 

http://jsfiddle.net/kL3c8/6/

+0

这很好,谢谢你的解释和答案。 – Alex 2013-03-19 12:33:09

1

问题是:$('.partnerGroupContent:nth-child(2))没有返回任何东西。

用途:var myColumn = $('.partnerGroupContent').children(2);

然后用html追加到partnerGroupmyColumn.html()

我已经更新您的提琴展示的内容更新下:

http://jsfiddle.net/kL3c8/5/

+0

感谢,但仍然没有工作对我来说:HTTP:// jsfiddle.net/kL3c8/7/ – Alex 2013-03-19 12:28:06

+0

@Alex - 您需要myColumn.html()而不是myColumn。 'html'是一个返回标记的函数。希望这有助于:) – 2013-03-19 12:28:34

+0

@DarrenDavies LOL你的答案弹出,因为我回答,太快是Dazefs;) – mattytommo 2013-03-19 12:29:19

0

尝试

var rowCount = 2 

var myColumn = $('.partnerGroupContent > :nth-child(2)') 

if (rowCount == 2) { 

$('<div class="partnerGroupContent2"></div>').insertAfter('.partnerGroupContent').append(myColumn.clone()); 

} 

演示:Fiddle

0

即使您可以通过

var rowCount = 2 
var columnArray = $('div.partnerGroupContent > div'); 

得到所有列格数组,并得到一个特定的列的div通过它的数组索引

if (rowCount == 2) { 
    var myColumn = $(divArray[rowCount-1]).html(); 
    $('.partnerGroupContent').after('<div class="partnerGroupContent2">' + myColumn +  '</div>'); 
}