开发者问题收集

在 for 循环中附加项目 - jquery

2015-08-30
3948

我正在通过 Javascript 添加一个简单的切换按钮。然后我想在其中添加三个 span 标签。

因此,我正在创建 span 变量并尝试将其附加到我们自己的基本 FOR 循环中。迭代次数为 3 次。

下面是我的基本代码。请告诉我缺少或放错了什么,导致我的 span 标签拒绝多次附加。我在检查模式下检查了这一点。

然后,我打开控制台选项卡, i 的值为 3。附加意味着 附加 而不是 替换 元素。对吗?

var $navbar_header = $('<div class="navbar-header"></div>');

var $button = $("<button></button>");
var $span = $('<span class="icon-bar"></span>');

for (var i = 0; i < 3; i++) {
   $button.append($span);
 }

$button.addClass('navbar-toggle');
$navbar_header.append($button);
$("#menu").append($navbar_header);

这是指向 fiddle 的 链接

1个回答

DOM 是一棵树,其中任何元素都指向其父元素(请参阅 parentNode )。一个元素只能有一个位置。因此,当您附加一个元素时,您会将其从其先前的位置移除。

此处的解决方案是克隆元素:

$button.append($span.clone());

或者只是在循环中创建它:

for (var i = 0; i < 3; i++) {
    $button.append('<span class="icon-bar"></span>');
}
Denys Séguret
2015-08-30