insertAfter 在循环内

发布于 2024-11-27 04:42:13 字数 629 浏览 1 评论 0原文

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

I have some code generated by a CMS:

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

and I need to move the link to after the text div. I have tried this:

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

but this only results in links being repeated about 10 times (the number of times looped.

I tried using $(this) but I don't quite understand how to write the correct syntax to append the a.link within the function... like this:

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

哭泣的笑容 2024-12-04 04:42:13

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

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

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

或者,您可以这样做:

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

这假定您要将元素放在 div.block 的末尾。

Something like this should work, using siblings and after:

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

That says "for each element matched, find the element that matches .text and insert the original element after it".

Alternatively, you could do this:

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

This presumes that you want to put the element at the end of the div.block.

悲欢浪云 2024-12-04 04:42:13

你可以这样做(如果你想在带有类文本的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);
    });
   });

You could do (if you want it after the div with class text):

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

or (if you want it after the div with class block)

$(document).ready(function() {
    $('.block a').each(function(){
       $(this).closest('div.block').after(this);
    });
   });
恬淡成诗 2024-12-04 04:42:13

试试这个:

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

Try this:

$(document).ready(function() {
            $('.block').each(function() {
                var divtext = $('div.text', this)
                $('a.link', this).insertAfter(divText);
            });
});
寂寞花火° 2024-12-04 04:42:13

试试这个

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

Try this

$('div.block a.link').each(function() {
    $(this).siblings('div.text').after(this);
});
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文