2013-07-10 3 views
0

Хорошо, я создал динамический динамик в jQuery, чтобы отобразить некоторые блог-посты.Как сбросить цикл jQuery

<div class="blog-items"> 
    <div class="blog-item"></div> 
</div> 

jQuery ниже добавляет класс nomargin для удаления поля на последнем блоке. Как я могу сбросить цикл, чтобы он начинался снова в новой строке. В настоящее время класс nomargin применяется к остальным блокам.

Вот JQuery ВЫПИСКИ

var blogItemLength = $('.blog-item').length; 
if(blogItemLength > 2) { 
    $('.blog-item:gt(1)').removeClass("blog-item").addClass("blog-item_nomargin"); 
} 

Надеется, что имеет смысл, спасибо заранее.

+0

Вы хотите добавить класс 'blog-item_nomargin' только к последнему элементу с именем класса .blog-item? –

+0

заменить 'gt (1)' на 'last' – RST

+0

Да, это так. Есть 3 divs с блочным блоком класса, и мне нужен последний, чтобы иметь класс blog-item_nomargin. Всего 9 разделов, поэтому 3 строки по 3 и каждый третий в строке должны добавить этот класс. Спасибо – usandthem4

ответ

0

Я хотел бы предложить, из что мало я понимаю вашей проблемы:

$('.blog-item').filter(function(i){ 
    return (i + 1)%3 === 0; 
}).removeClass('blog-item').addClass('blog-item_nomargin'); 

Это занимает все .blog-item элементы, фильтрует их, чтобы только третий, шестой, девятый ... элементы, удаляющий имя-класса blog-item и добавляет blog-item_nomargin class- имя.

Ссылки:

0

Я не могу ответить на вопрос jquery, потому что я не понял точно, чего вы пытаетесь достичь.

Но вы рассматривали использование селекторов CSS? Если вы хотите стилизовать свой последний .blog-элемент по-другому, вы можете использовать:

.blog-item:last-child { 
    color: red; /* or whatever */ 
} 

Для других более сложных сценариев, есть: п-й последний ребенок()

0

Использование селектора last() яснее, чем gt() (больше чем) селектор:

$('.blog-item').last().removeClass("blog-item").addClass("blog-item_nomargin"); 

Но если вы должны использовать gt():

$('.blog-item:gt(-2)').removeClass("blog-item").addClass("blog-item_nomargin"); 

Пожалуйста, обратите внимание, что если у вас есть несколько DIV .blog-items на вашей странице, вам может понадобиться сделать что-то вроде этого:

$('.blog-items').each(function(index){ 
    $(this).children('.blog-item').last().removeClass("blog-item").addClass("blog-item_nomargin"); 
}); 

Ссылки

http://api.jquery.com/last/
http://api.jquery.com/gt-selector/

+0

спасибо всем и извините за смутное q, думаю, я нашел решение – usandthem4

0

Из того, что я понял из вашей проблемы я попытался это:

var blogItemLength = $('.blog-item').length; 
$('.blog-items').each(function() { 
    if(blogItemLength > 2) { 
    $(this).find('.blog-item').last().removeClass("blog-item").addClass("blog-item_nomargin"); 
}  
}); 

http://jsfiddle.net/steo/BEmjA/ (я использовал только некоторый класс образца.)

Кода я написал изменяет class третьего пункта для каждой группы blog-items

Надеется, что это имеет смысл.

Смежные вопросы