我正在尝试编写一个 jQuery 函数,它搜索当前页面上所有具有“圆角”类的 div,然后用包含一些漂亮背景图像的包装表替换这些 div。见下文...
$(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会被我的包装表替换。
有趣的是,当我使用调试器单步执行这段代码时,实际上所有嵌套的 div 都被检索和处理了——它们根本不会在屏幕上更新。(注意:最外层的 div 首先被处理,然后是每个嵌套的孩子)。
- 会不会是 each() 函数中的 DOM 元素变得陈旧了?
- 我是否需要在每次迭代结束时以某种方式显式更新 DOM?
- 或者有没有一种方法可以一次处理所有 div(即不使用 each() 函数)?