如何更改此代码以使其正常工作?

时间:2011-04-22 16:38:23

标签: jquery

我从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 中,但事实并非如此。也许它与文档准备就绪有关。

如果是其他东西,我无法看到它,这让我非常焦虑。那么,有什么建议可以做些什么呢?我做错了什么?提前谢谢。

1 个答案:

答案 0 :(得分: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();
});