我正在嘗試編寫一個jQuery函數來搜索當前頁面上所有具有「圓角」類的div,然後用一個包含一些換行符的換行表替換這些div漂亮的背景圖像。見下文......jQuery:替換DOM中的嵌套元素
$(document).ready(function()
{
// For all "rounded-corners" div's on the page...
$("DIV.rounded-corners").each(function()
{
// Copy the contents of the div into a wrapping table.
var $roundedCornersContainer = $('<table cellpadding="0" cellspacing="0" class="rounded-corners-container"> \
<tr> \
<td class="corner-topleft"></td> \
<td class="corner-topright"></td> \
</tr> \
<tr> \
<td class="original-content" colspan="2">THIS IS WHERE THE CONTENT IS INSERTED</td> \
</tr> \
<tr> \
<td class="corner-bottomleft"></td> \
<td class="corner-bottomright"></td> \
</tr> \
</table>');
$roundedCornersContainer.find("TD.original-content").append($(this).html());
// Replace the original "rounded-corners" div with the populated wrapping table.
$(this).replaceWith($roundedCornersContainer);
});
});
這個偉大的工程,只要不存在任何嵌套的「四捨五入的角落」的div。如果有,那麼只有最外層的div被我的包裹表取代。有趣的是,當我用degugger遍歷這段代碼時,所有嵌套的div實際上被檢索和處理 - 它們simpy不會在屏幕上更新。 (注意:首先處理最外面的div,然後再處理每個嵌套的子項)。
- 難道是each()函數中的DOM元素變得陳舊嗎?
- 我是否需要在每次迭代結束時以某種方式顯式更新DOM?
- 或者有什麼辦法可以一次處理所有div(即不使用each()函數)?
你能不能另一個類添加到外層div,然後用它來找到你的div?如果你做了一個'$(「div.rounded-corners」),那麼當然它會返回所有的div.rounded角落,即使它們嵌套在其他div.rounded角落。 – Jeemusu 2012-07-11 04:22:12
當您使用replaceWith時,應該已經刪除原始的內部分隔角落。 – Willy 2012-07-11 04:32:06