#javascript #jquery
#javascript #jquery
Вопрос:
Приведенный ниже код работает, но с ним есть проблема.
Проблема заключается в том, что, если в коде нет предупреждения (this.href); — (около строки 11), следующая функция не работает.
//There are pages which make up 2 chapters in this content
//We shall attempt to grab all the links from these pages
var c;
var chapters = new Array();
chapters[0] = "original/html/0/ID0EFJAE.html";
//Loop through each page of links
$.each(chapters, function(key, value) {
$("#theContent").append("<div class='chapterindex" key "'>working</div>");
$(".chapterindex" key).load(value " .content");
alert(this.href);
$(".chapterindex" key " div.link a").each(function(intIndex) {
alert(".chapterindex" key);
});
});
Если я удалю первое предупреждение из строки 11, то последнее предупреждение не сработает. Что я делаю не так?
Комментарии:
1. Возможно, потребуется добавить некоторую синхронность
setTimeout(0)
вместо предупреждения2. Сроки! Возможно, первое предупреждение блокирует javascript достаточно долго, чтобы данные завершили загрузку 🙂
Ответ №1:
Задержка, которую alert
вызывает is, позволяет загружать данные в вашем load
вызове. Я подозреваю, что при удалении alert
данные не загружаются вовремя.
Попробуйте использовать обратный вызов с вашим load
вызовом, что-то вроде (код не тестировался) —
$(".chapterindex" key).load(value " .content",function () {
$(".chapterindex" key " div.link a").each(function(intIndex) {
alert(".chapterindex" key);
});
});
Комментарии:
1. Итак … использовать функцию обратного вызова в
load
?
Ответ №2:
Первое предупреждение, вероятно, дает функции загрузки достаточно времени для завершения, поэтому, когда вы извлекаете его, функция загрузки не выполняется, когда она пытается запустить ваше второе предупреждение.