2013-03-19 49 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>'); 
}