2011-10-13 69 views
0

下面的代碼有效,但存在問題。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行之外,那麼最後的警報不會觸發。我究竟做錯了什麼?

+0

可能需要添加一些同步性'setTimeout(0)'而不是警報 – vol7ron

+0

定時!也許第一個警報阻止JavaScript只是足夠的數據完成加載:) – PhD

回答

5

alert引起的延遲是允許調用load調用中的數據。我懷疑當您刪除alert時,數據無法及時加載。

嘗試使用回調與load通話,有點像(未測試代碼) -

$(".chapterindex" + key).load(value + " .content",function() { 
     $(".chapterindex" + key + " div.link a").each(function(intIndex) { 
      alert(".chapterindex" + key); 
     }); 
}); 
+0

所以...在'load'中使用回調函數? – Blazemonger

1

第一個警報可能給負載的功能足夠的時間來完成,所以當你把它拿出來加載功能當它試圖發射你的第二個警報時沒有完成。