2012-04-12 41 views
0

考慮以下幾點:我將如何替換DOM節點並將其包裹?

我有一個div,我正與一個文本替換,如:

var $targetDiv = $('#the-div'); 
var $newDiv = $('#the-new-div'); 

$targetDiv.replaceWith($newDiv); 

這將打開:

<div id="the-div"></div> 

到:

<div id="the-new-div"></div> 

如何將<div id="the-new-div"></div>換成<div id="the-new-div-wrapper">

所以結果將變成:

<div id="the-new-div-wrapper"> 
<div id="the-new-div"> 
</div> 
</div> 

$targetDiv.replaceWith($newDiv).wrap('<div id="the-new-div-wrapper"' />')似乎並沒有工作。

+0

我相信單引號未在包裝HTML匹配。 – 2012-04-12 10:09:29

回答

3

做包裝第一

$targetDiv.wrap('<div id="the-new-div-wrapper" />').replaceWith($newDiv); 

或使其在兩行:

$targetDiv.replaceWith($newDiv); 
$newDiv.wrap('<div id="the-new-div-wrapper" />'); 

Fiddle

還有代碼中的錯字:$targetDiv.replaceWith($newDiv).wrap('<div id="the-new-div-wrapper"' />')有一個額外的撇號,這不應該在那裏。

+0

我本可以發誓,我原來是這樣試過的。好吧。你聰明,你。謝謝!當限制結束時我會接受。 – 2012-04-12 10:03:03

+2

問題是,replaceWith似乎返回舊的div,而不是新的。因此,在替換之後鏈接換行,實際上會包含不再存在的舊分區 – 2012-04-12 10:03:56

+0

@Stijn_d感謝您的解釋! :)事情鏈現在完全有意義,我想到了它...... – 2012-04-12 10:06:39

2

試試這個

$targetDiv.replaceWith($newDiv.wrap('<div id="the-new-div-wrapper"' />')); 

它實際上在很多之前包裹在div替換目標格但會達到同樣的效果。

看到這裏

http://jsfiddle.net/WgW6Y/

相關問題