兄弟姐妹之后移动元素

时间:2013-01-17 22:55:21

标签: jquery dom element siblings

我有数百个

<div class="post">

在彼此旁边。

新元素通过AJAX更新并置于现有元素之上。

现在有一个特殊的

<div id="ad1">

我希望永远保持在第n位。

所以我做了那个功能:

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

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

非常欢迎任何意见。

由于 圣拉斐尔

2 个答案:

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

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

答案 1 :(得分:0)

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

$("div.post:nth-child("+n+")").before($('#ad1'));