我有数百个

<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/

09-05 17:46