jQuery — удаление кода остановки предупреждения из работы

#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:

Первое предупреждение, вероятно, дает функции загрузки достаточно времени для завершения, поэтому, когда вы извлекаете его, функция загрузки не выполняется, когда она пытается запустить ваше второе предупреждение.