2011-04-22 48 views
0

我开始使用Flask,并且我在使用jQuery和(我认为)Flask的模板系统时遇到了一些问题。我想要做的事情非常简单:在jQuery库之后,我在布局主模板layout.html中包含了一个behavior.js脚本。其内容是:如何更改此代码以使其工作?

jQuery(document).ready(function() { 
    var events = $("#fake_grid td"); 
    while(events.length > 0) { 
     $("#the_grid").append($("<tr/>").append(events.slice(0, 3))); 
    } 
    $("#fake_grid").remove(); 
}); 

当我尝试执行此,我的浏览器崩溃,我不能弄明白为什么以及如何解决它。我一直在考虑jQuery没有正确加载或加载后我的脚本,但我已经与FireBug检查,在这件事情的一切工作正常。我试过用alert()代替所有的代码,并且工作得很好。我试过用几种不同的方法将我的.js包含在子模板index.html中,但事实并非如此。也许这是文件准备好的事情。

如果是别的,我无法看到它,这让我非常焦虑。那么,对此有何建议?我做错了什么?提前致谢。

+0

如果你的浏览器崩溃这是无关瓶/神社但纯JS的事情。我猜你的代码不知何故会导致无限循环。 – ThiefMaster 2011-04-22 16:42:54

回答

1
jQuery(document).ready(function() { 
    var events = $("#fake_grid td"); 
    while(events.length > 0) { 
     $("#the_grid").append($("<tr/>").append(events.slice(0, 3))); 
    } 
    $("#fake_grid").remove(); 
}); 

.slice没有破坏性。它会返回一个新的集合,删除那些集合。

这意味着您的循环会永久运行,因为.length永远不会打零。

这应该工作,虽然

jQuery(document).ready(function() { 
    $("#fake_grid td").each(function(i, val) { 
     $("#the_grid").append($("<tr></tr>").append(this)); 
    }); 
    $("#fake_grid").remove(); 
}); 
+0

这工作完美。谢谢! – 2011-04-22 17:08:10