2011-08-16 44 views
5

如何在2(或更多)div上添加div元素?我想:使用jQuery创建其他两个div的wrapper div

HTML:

<div class="list-price">20000</div> 
<div class="sell-price">10000</div> 

的jQuery:

$('div.list-price').each(function() { 
    $(this).before('<div class="action-price">'); 
    $(this).next().after('</div>'); 
    }); 

我希望上面的代码将做到这一点:

<div class="action-price"> 
<div class="list-price">20000</div> 
<div class="sell-price">10000</div> 
</div> 

但是:

<div class="action-price"></div> 
<div class="list-price">20000</div> 
<div class="sell-price">10000</div> 

任何人都可以帮助我吗?

感谢,

的Gabor

+0

你之前和之后的用法是无效的,因为这些方法不写文本文档内容,他们宁愿写_nodes_。因此,1st('before')插入自动关闭(bu jQuery本身)标记,第二个('after')由于无效标记而跳过 – Guard

回答

1

您所想元素的HTML代码的,但它们是对象。你不能单独添加开始和结束标签,因为它们不是完整的元素。

添加新的元素,并移动其内部现有的div:

$('div.list-price').each(function() { 
    var newDiv = $('<div/>').addClass('action-price'); 
    $(this).before(newDiv); 
    var next = $(this).next(); 
    newDiv.append(this).append(next); 
}); 

演示:http://jsfiddle.net/Guffa/eFXbN/1/

+0

Thx Guffa,您是对的,但每条线内都缺少一条线): $(this).parent('div')。addClass('action-price'); – riskogab

+0

@riskogab:我已经添加了,并且还有一个演示链接。 :) – Guffa

+2

看到我的方法和答案,其更清洁。 http://jsfiddle.net/blowsie/eFXbN/7/ – Blowsie

0
$first = ... // the 1st element 
$rest = ... // other elements, may be just the second one 
$first.wrap('<div class="wrapper"/>').parent().append($rest) 
0

我不得不您的最后一行revese到:

$休息。包裹( '')的父()追加($第一)。;

1

一个很好的方法是执行以下操作。

$("div.list-price").each(function(){ 
    $(this).nextUntil("div.list-price").andSelf().wrapAll("<div class='action-price'></div>"); 
}); 

它的简单和可读性,可能是jQuery开发人员打算写它的方式。

6

尝试使用wrapAll功能:

$('.list-price, .sell-price').wrapAll('<div class="action-price" />');