3

我有数百个

<div class="post">

彼此相邻。

新元素通过 AJAX 更新并放在现有元素之上。

现在有一个特殊的

<div id="ad1">

我想一直保持在第 n 位。

所以我做了这个功能:

$(".post").each(function() {
    if(cnt>2){
        $('#ad1').after(this);
    }
    cnt++;
});

它几乎可以工作,但是,#ad1 之后移动的元素顺序相反,因为循环从 1 到 n,但元素总是直接附加在 #ad1 之后。

非常欢迎任何意见。

谢谢拉斐尔

4

2 回答 2

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'));

http://jsfiddle.net/mblase75/MD4b2/

于 2013-01-17T22:58:01.810 回答
0

你也可以在这里使用 nth-child:

$("div.post:nth-child("+n+")").before($('#ad1'));
于 2013-01-17T23:03:24.803 回答