我有一些由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);
答案 0 :(得分:8)
使用siblings
和after
:
$('.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);
});