2016-12-03 73 views
0

我非常簡單地實現了jQuery的每種方法。我複製了以下代碼https://api.jquery.com/each/以瞭解每種方法的工作方式。在本地測試了html/js代碼失敗之後,我將它複製到了JSBin中,並且看到它工作。有人能指出我出錯的地方嗎?我懷疑這是jQuery的CDN我掛......jQuery .each()沒有將消息記錄到控制檯

HTML

<!DOCTYPE html> 
<html> 
<head> 
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js"></script> 
    <script src="ex.js"></script> 
</head> 
<body> 
<ul> 
    <li>foo</li> 
    <li>bar</li> 
</ul> 
</body> 
</html> 

JS

$("li").each(function(index) { 
    console.log(index + ": " + $(this).text()); 
}); 
+2

腳本元素需要在它嘗試訪問的元素之後,和/或你可以將JS顯示在文檔就緒處理程序中。 (JSBin可以自動執行此操作 - 當然JSFiddle默認使用onload處理程序。) – nnnnnn

回答

1

使用準備功能推薦的方法是這樣的:

$(function() { 
    $("li").each(function(index) { 
     console.log(index + ": " + $(this).text()); 
    }); 
}); 

這也是在API中提到的第一種語法。您可能會注意到,代碼中沒有「準備就緒」。這是因爲該處理程序將在加載DOM後進行初始化。

jQuery提供了幾種附加DOM準備就緒的函數的方法。以下所有語法是等價的:

  • $(處理器)
  • $(文件)。就緒(處理)
  • $( 「文件」)。就緒(處理)
  • $(「 。IMG」)。就緒(處理)
  • $()準備就緒(處理)

在jQuery 3.0,只有建議第一種語法;其他語法仍然有效,但不推薦使用。

3

你應該jQuery's on ready方法加載JS腳本是這樣的:

$(function() { 
    $("li").each(function(index) { 
     console.log(index + ": " + $(this).text()); 
    }); 
}); 

.ready()方法d只要 頁面的文檔對象模型(DOM)變得可以安全操作,就可以運行JavaScript代碼。此 通常是執行用戶查看或與頁面交互之前所需任務的好時機,例如添加事件 處理程序和初始化插件。當通過 連續調用此方法添加多個函數時,它們在DOM準備好時按其添加的 順序運行。從jQuery 3.0開始,jQuery確保在一個處理程序中發生的異常不會阻止隨後執行的 添加的處理程序。

希望這會有所幫助!