#jquery
#jquery
Вопрос:
Я начинаю с Flask, и у меня возникли некоторые проблемы с jQuery и (я думаю) системой шаблонов Flask. То, что я хотел сделать, очень просто: я включилbehavior.js скрипт в главном шаблоне макета layout.html, после библиотеки jQuery. Его содержимое:
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 (), и это тоже сработало нормально. Я пытался включить my .js в дочерний шаблонindex.html несколькими различными способами, но это было не так, наверняка. Возможно, это что-то с готовностью документа.
Если это что-то другое, я не могу это увидеть, и это меня действительно беспокоит. Итак, есть какие-нибудь советы, что с этим делать? Что я делаю не так? Заранее спасибо.
Комментарии:
1. Если ваш браузер выходит из строя, это не связано с flask / jinja, а связано с чистым JS. Я предполагаю, что ваш код каким-то образом приводит к бесконечному циклу.
Ответ №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();
});