我有数百个
<div class="post">
在彼此旁边。
新元素通过AJAX更新并置于现有元素之上。
现在有一个特殊的
<div id="ad1">
我希望永远保持在第n位。
所以我做了那个功能:
$(".post").each(function() {
if(cnt>2){
$('#ad1').after(this);
}
cnt++;
});
它几乎可以工作,但是,在#ad1之后移动的元素是相反的顺序,因为循环从1到n,但元素总是直接在#ad1之后附加。
非常欢迎任何意见。
由于 圣拉斐尔
答案 0 :(得分:4)
跳过循环。只需要一行代码就可以了(在向顶部添加任何新元素后运行它):
$('.post').eq(n).before($('#ad1')); // don't forget .eq is zero-based
http://jsfiddle.net/mblase75/MD4b2/2/
或者将其余内容移到广告下方:
$('.post').eq(n-1).nextUntil('#ad1').insertAfter($('#ad1'));
答案 1 :(得分:0)
你也可以在这里使用nth-child:
$("div.post:nth-child("+n+")").before($('#ad1'));