我有数百个
<div class="post">
彼此相邻。
新元素通过AJAX进行更新,并置于现有元素之上。
现在有一个特殊的
<div id="ad1">
我想一直保持在第n位。
所以我做了那个功能:
$(".post").each(function() {
if(cnt>2){
$('#ad1').after(this);
}
cnt++;
});
几乎可以正常工作,但是#ad1之后移动的元素是相反的顺序,因为循环从1到n,但是元素总是直接附加在#ad1之后。
任何输入都非常欢迎。
谢谢
拉斐尔
最佳答案
跳过循环。只需执行一行代码即可(在顶部添加任何新元素后运行):
$('.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'));
http://jsfiddle.net/mblase75/MD4b2/