2017-10-21 104 views
1

請不要重複我的功能,最好的方法:$(document).ready equivalent without jQuery運行JavaScript在頁面加載

我的問題有一點點差別。我會解釋一下。 我已經把所有的功能都放在這樣的功能上。

$(document).ready(function() { 
$("#liLanguage").find("a").click(function() { 
      ChangLanguage(this); 
     }); 
// orther a lot of function here 
    LoadDataToGrid(); 
} 

它做得很好 但是,昨天我下午說:「你不需要把你的代碼在準備功能,您可以在不準備功能運行時,放在準備功能是很瘋狂和愚蠢」

我已經閱讀了關於ready函數和window.onload()函數的更多主題。但是,不要說我們不能在現成的功能中運行一個功能。當我把所有的功能放在現成的功能中時,我的代碼有什麼問題?

這是更好的

$(document).ready(function() { 
$("#liLanguage").find("a").click(function() { 
      ChangLanguage(this); 
     }); 
} 

或者這是更好的(沒有現成功能)

$("#liLanguage").find("a").click(function() { 
      ChangLanguage(this); 
     }); 
+4

「瘋狂」或「愚蠢」都不是有效的批評。如果一段代碼存在真正的問題,評論者應該能夠解釋使用它造成的困難。 – Alohci

+0

謝謝,順便說一下。你能告訴我沒有更好的準備好功能或準備好的功能運行更好嗎?我看到一切都做得好 –

+0

如果顯示的代碼包含在'#liLanguage'元素後面的腳本元素中(例如,在主體的末尾),那麼這兩個版本都可以工作。如果顯示的代碼包含在'#liLanguage'元素之前的腳本元素*中,那麼只有具有就緒處理程序的代碼才能工作。 – nnnnnn

回答

1

我認爲,你把準備好的功能會更好,因爲它是獨立的,你把你的代碼。例如:

例1:

<!DOCTYPE html> 
 
<html> 
 
<head> 
 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script> 
 
<script> 
 
    $(document).ready(function() { 
 
     Test(); 
 
    }); 
 
    function Test() { 
 
     $("#test").click(function(){ 
 
      console.log(2); 
 
     }) 
 
    } 
 
</script> 
 
</head> 
 
<body> 
 
<input type = "button" id ="test" value = "Test"> 
 
</body> 
 
</html>

但是,如果你把這樣的代碼將無法運行。

例2:

<!DOCTYPE html> 
 
<html> 
 
<head> 
 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script> 
 
<script> 
 
    Test(); 
 
    function Test() { 
 
     $("#test").click(function(){ 
 
      console.log(2); 
 
     }) 
 
    } 
 
</script> 
 
</head> 
 
<body> 
 
<input type = "button" id ="test" value = "Test"> 
 
</body> 
 
</html>

,如果你把你的腳本的HTML後,它會運行正常。

例3:

<!DOCTYPE html> 
 
<html> 
 
<head> 
 
</head> 
 
<body> 
 
<input type = "button" id ="test" value = "Test"> 
 
</body> 
 
</html> 
 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script> 
 
<script> 
 
    Test(); 
 
    function Test() { 
 
     $("#test").click(function(){ 
 
      console.log(2); 
 
     }) 
 
    } 
 
    </script>

它的意思是:用例1,你可以把JavaScript的任何地方,你不需要去關心它。

4

通常,項目經理不具有工程背景,他們喜歡談論像他們這樣做。試着注意這一點。

現在要回答您的問題,您可以簡單地將您的腳本添加到HTML的底部而不是頭部。這樣,在DOM準備就緒後,您的腳本將會加載,每個基本上是document.ready所做的。

+0

謝謝,我已經添加了我的腳本在HTML的底部,你的意思是我的代碼沒有錯? –

+1

你的代碼沒有問題。看看這個其他答案:https://stackoverflow.com/questions/6026645/document-readyfunction-vs-script-at-the-bottom-of-page –