2012-11-13 49 views
0

我想知道 - 我是否需要在jQuery中使用ready操作,如$(document).ready()以進行DOM操作。例如,我有一個javascript函數:我是否需要使用Dom操作的準備事件?

function handler(input,id) {   
    $(document).ready(function(){ 
     document.getElementById(input).value = id; 
     document.search_form.submit(); 
    }); 

} 
+3

只有在DOM完成加載之前執行'handler'。 –

回答

1

幾個關於您的代碼註釋:

1. function handler(input,id) {   
2. $(document).ready(function(){ 
3.  document.getElementById(input).value = id; 
4.  document.search_form.submit(); 
5. }); 
6.} 

2號線和5並不需要 - 因爲這是一個功能,將被調用,而不是執行上的負載,你不需要準備處理程序。 $(document).ready(function() {行意味着當DOMready時執行以下代碼 - 如果其內部像您的函數那樣是不需要的(但仍然有效)。你可以閱讀更多關於ready()here

3號線可改爲$('#'+input).val(id);這款採用了jQuery ID selectorval()功能更改值。

結束了

function handler(input,id) {   
    $('#'+input).val(id); 
    document.search_form.submit(); 
} 

你也許可以改變你的代碼多一點函數名判斷....

5

不,這不是必需的。您可以將JavaScript放在</body>標記之前的文檔末尾。

您也可以使用window.onload事件,儘管我不會推薦它,因爲直到所有圖像加載完成後纔會啓動,這可能在加載DOM後很長一段時間。

儘管這三種方法之一是最好的想法,因爲在瀏覽器中完全加載這些元素之前,您無法使用JavaScript來操作DOM元素。

也就是說,可能沒有理由把$(document).ready放在另一個函數中。在幾乎所有情況下,您都希望$(document).ready環繞您的​​其他JavaScript代碼。

6

號碼上帝沒有。不要這樣做。 $(document).ready()不應該在函數內部。

+0

它不會,但它是毫無意義的處理,甚至更無意義的封裝。 –

+0

準備好文檔可能很久以前,處理程序被調用時 – Andbdrew

+0

而是從DOM確定已加載的地方調用該函數(可以在'$(document).ready()'內部)。 @Blazemonger如果你在DOM加載完成之後這樣做了,它還能工作嗎? – 11684

0

不,你不會。這取決於您何時要操作DOM。這意味着你應該考慮在你的javascript放置在<body>之前,之後或之內的位置。

相關問題