我有以下模型(这是一个jsbin:http://jsbin.com/vadutezaci/1/edit?html,css,output):

<div class='jt-header'>a header 1</div>
<div class='jt-detail'>a detail 1
  <div class='jt-item-price'>12.34</div>
</div>
<div class='jt-header'>another header 2<div class='jt-item-price'>34.45</div></div>
<div class='jt-detail'>another detail 2
</div>


基本上,如果jt-item-price在jt-detail内,我想附加到前面的jt-header处;这是上面的第一对。如果它已经在jt标头中,请保持不变(第二对),以使上面的内容变为:

<div class='jt-header'>a header  <div class='jt-item-price'>12.34</div>
</div>
<div class='jt-detail'>a detail
</div>
<div class='jt-header'>another header<div class='jt-item-price'>34.45</div></div>
<div class='jt-detail'>another detail
</div>


我该怎么做?我会认为detach()。appendTo()但是我如何检测到jt-item-price在一个细节之内,以及如何将其告知前面的jt-header(可能会插入非jt-header元素) ?

编辑#1

一个更现实的示例似乎使用next()中断了:

<div class='jt-row'>
<div class='jt-header'>a header 1</div>
</div>
<div class='jt-row'>
<div class='jt-detail'>a detail 1
  <div class='jt-item-price'>12.34</div>
</div>
</div>
<div class='jt-row'>

<div class='jt-header'>another header 2<div class='jt-item-price'>34.45</div></div>
</div>
<div class='jt-row'>
<div class='jt-detail'>another detail 2
</div>
</div>

最佳答案

jQuery append()接受一个函数,可以使用以下逻辑:

$('.jt-header').append(function(){
    return $(this).next('.jt-detail').children('.jt-item-price');
});


-jsFiddle-

关于jquery - 如何将一个元素移入另一个元素中,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28661854/

10-12 00:09
查看更多