在下面的HTML中,我想复制H2标签中“message”旁边的“submittedby”:
<div class="comment">
<H2 class="threadtitle">Message 1</h2>
<span class="submittedby">James</a>
</div>
<div class="comment">
<H2 class="threadtitle">Message 2</h2>
<span class="submittedby">Bill</a>
</div>
<div class="comment">
<H2 class="threadtitle">Message 3</h2>
<div class="submittedby">Phil</a>
</div>
我目前的jQuery代码如下:
$(document).ready(function() {
$('.submittedby').copy().appendTo('.threadtitle');
});
问题是这个副本每次“提交”到每个“标题”。我如何编码它所以它只复制同一个“评论”div中的“submittedby”? 谢谢!
答案 0 :(得分:4)
在这里使用.each()
,如下所示:
$(function(){
$('.submittedby').each(function() {
$(this).clone().appendTo($(this).siblings('.threadtitle'));
});
});
这会循环遍历每个.submittedby
元素,并相对于循环中的当前 .submittedby
移动它,因此每个元素都会被单独处理。此外,我假设您在此处使用.clone()
,但如果您实际使用的是.copy()
plugin,请在上面的代码中将.clone()
替换为.copy()
。
答案 1 :(得分:1)
$('.submittedBy'.each(function() {
var $sb = $(this);
$sb.copy().appendTo($sb.closest('.comment').find('h2.threadtitle'));
});
当您使用.each()
时,您可以为处理的每个元素运行代码。
编辑感谢@Nick
答案 2 :(得分:1)
$('.submittedby').each(function() {
$(this).prev('.threadtitle').append($(this).html());
});
答案 3 :(得分:0)
$(document).ready(function(){
$('span.submittedby, div.submittedby').each(function() {
self = $(this);
self.before(self.clone());
});
});
<强> Obligatory example 强>
答案 4 :(得分:0)
尝试按父母限制:
$(document).ready(function(){
$('.submittedby:parent').each(function(){
$(this).find('.submittedby').copy().appendTo('.threadtitle');
})
});