7

我有一些由 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

4 回答 4

8

像这样的东西应该可以工作,使用siblingsand after

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

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

或者,您可以这样做:

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

这假定您要将元素放在div.block.

于 2011-07-28T14:53:02.423 回答
1

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

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

或(如果你想在 div 后面加上 class 块)

$(document).ready(function() {
    $('.block a').each(function(){
       $(this).closest('div.block').after(this);
    });
   });
于 2011-07-28T14:53:01.750 回答
1

试试这个:

$(document).ready(function() {
            $('.block').each(function() {
                var divtext = $('div.text', this)
                $('a.link', this).insertAfter(divText);
            });
});
于 2011-07-28T14:53:19.390 回答
0

试试这个

$('div.block a.link').each(function() {
    $(this).siblings('div.text').after(this);
});
于 2011-07-28T14:54:28.820 回答