2013-07-10 57 views
0

好吧,我在jQuery中動態創建了一個div來顯示一些博客帖子。如何重置循環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

用'last'替換'gt(1)' – RST

+0

是的,沒錯。有3個div與類博客項目,我需要最後一個有blog-item_nomargin類。總共有9個div,因此行中的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講座名稱。

參考文獻:

0

我無法回答jquery問題,因爲我還沒有明確地明白你想要達到的目標。

但你有沒有考慮過使用CSS選擇器?如果你想以不同的風格你最後.blog項,你可以使用:

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

對於其他比較複雜的情況,有:第n-最後孩子()

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項目元素在你的頁面中,你可能需要這樣做:

$('.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

希望的,這是有道理的代碼。