在循环中插入

时间:2011-07-28 14:48:29

标签: jquery loops insertafter

我有一些由CMS生成的代码:

<div class="block">
  <a class="link" href="#">Link</a>
  <h4>Header here</h4>
  <div class="text">Some text here</div>
</div>

我需要将链接移到文本div之后。我试过这个:

$(document).ready(function() {
        $('.block').each(function() {
            $('.block a.link').insertAfter('.block div.text');                      
        });
    });

但这只会导致链接重复约10次(循环的次数。

我尝试使用$(this),但我不太明白如何编写正确的语法来附加函数中的a.link ......就像这样:

 $(this).a.link.insertAfter($(this).div.text);

4 个答案:

答案 0 :(得分:8)

使用siblingsafter

这样的事情应该有效
$('.block a.link').each(function() {
    $(this).siblings('.text').after(this);
});

说“对于匹配的每个元素,找到匹配.text的元素并在其后插入原始元素”。

或者,你可以这样做:

$('.block a.link').each(function() {
    $(this).parent().append(this);
});

这假设你想把元素放在div.block的末尾。

答案 1 :(得分:1)

你可以这样做(如果你想在带有类文本的div之后):

$(document).ready(function() {
    $('.block a').each(function(){
       $(this).next('div.text').after(this);
    });
   });

或(如果您想在带有类块的div之后使用它)

$(document).ready(function() {
    $('.block a').each(function(){
       $(this).closest('div.block').after(this);
    });
   });

答案 2 :(得分:1)

试试这个:

$(document).ready(function() {
            $('.block').each(function() {
                var divtext = $('div.text', this)
                $('a.link', this).insertAfter(divText);
            });
});

答案 3 :(得分:0)

试试这个

$('div.block a.link').each(function() {
    $(this).siblings('div.text').after(this);
});