我正在用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();
然而,它没有。我真的被卡住了,所以我很欣赏这方面的一些帮助。有什么想法吗?
答案 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++;
}