Javascript到Jquery转换,每次迭代都删除第一个子节点

时间:2014-11-27 18:29:08

标签: javascript jquery

我正在用Jquery重写一些旧项目来更好地学习它,我设法做了除了这个循环之外的所有事情。它应该遍历一个div容器并每次都删除第一个孩子。

var calendarModel = {
    siteContainer: $('#calendar-container')
}

while (calendarModel.siteContainer.firstChild) {
    calendarModel.siteContainer.removeChild(calendarModel.siteContainer.firstChild);
}

我的第一次(可怕的)尝试除了无限循环外没有产生任何结果:

var firstDiv = $('div:first-child', calendarModel.siteContainer);

while (firstDiv) {
    firstDiv.remove();
}

然后我尝试了这个:

var firstDiv = $('div:first-child', calendarModel.siteContainer);

while (calendarModel.siteContainer.firstDiv) {
    calendarModel.siteContainer.firstDiv.remove();
}

哪个更糟糕,因为它甚至没有进入循环。

我也试过没有循环,看它是否删除了任何东西:

var firstDiv = $('div:first-child', calendarModel.siteContainer);
    firstDiv.remove();

然而,它没有。我真的被卡住了,所以我很欣赏这方面的一些帮助。有什么想法吗?

2 个答案:

答案 0 :(得分:1)

jQuery使用本机api删除节点很危险,因为它可能导致内存泄漏。

而是使用jQuery方法,以便清理数据。

calendarModel.siteContainer.children().remove();

答案 1 :(得分:0)

循环必须包含测试条件。它们循环直到该测试条件不再为真。假设您的firstDiv选择器有一个div的数组

var i = 0;
while(firstDiv.length > i){
   console.log(firstDiv[i]);
   i++;
}