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

これを試して:

$(document).ready(function() {
            $('.block').each(function() {
                var divtext = $('div.text', this)
                $('a.link', this).insertAfter(divText);
            });
});
于 2011-07-28T14:53:19.390 に答える
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);
    });
   });
于 2011-07-28T14:53:01.750 に答える
0

これを試して

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