2013-03-19 3 views
2

Im пытается переместить некоторые дивы вокруг, но я не могу показаться, чтобы выбрать их просто получить через объект объекта:Невозможно выбрать п-й ребенок ДИВ

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

1

Проблема в следующем: $('.partnerGroupContent:nth-child(2)) ничего не возвращает.

Использование: var myColumn = $('.partnerGroupContent').children(2);

Затем добавить его в partnerGroup с помощью html: myColumn.html()

Я обновил свою скрипку, чтобы показать содержание обновления под:

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

+0

Спасибо, однако до сих пор не работает для меня: HTTP: // jsfiddle.net/kL3c8/7/ – Alex

+0

@Alex - вам нужен myColumn.html() не myColumn. 'html' - это функция, которая возвращает разметку. Надеюсь, что это поможет :) –

+0

@ DarrenDavies LOL ответ выскочил, поскольку я отвечал, слишком быстро Dazefs;) – mattytommo

0

Попробуйте

var rowCount = 2 

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

if (rowCount == 2) { 

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

} 

Демонстрация: Fiddle

0

Даже вы можете получить массив всех столбца DIV по

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>'); 
} 
Смежные вопросы