2013-07-10 46 views
15

我試着去調試使用jQuery.

在Firebug IM調用函數的$(文件)。就緒在我的web應用程序..

function val() { console.log('validated outside doc.ready'); } 
$(document).ready(function() 
{ 

    console.log('document ready...'); 

    function validate() { console.log('validated!'); } 
} 

在螢火蟲控制檯我輸入validate()它說它不是一個功能

如果我輸入val()它工作正常。

我如何從控制檯調用驗證?

+2

你爲什麼不把你的驗證功能的document.ready功能外..問題是你的函數是超出範圍時,它被稱爲.. – bipen

+0

它是因爲'validate'是anonymus函數中的一個閉包函數,傳遞給'ready'作爲回調 –

回答

45

你是不是叫這樣的一個功能,您只需定義功能。

正確的做法是定義函數外document.ready和內部稱之爲:

// We define the function 
function validate(){ 
    console.log('validated!'); 
} 

$(document).ready(function(){ 
    // we call the function 
    validate(); 
}); 

另一種選擇是自我調用這樣的功能:

$(document).ready(function(){ 
    // we define and invoke a function 
    (function(){ 
    console.log('validated!'); 
    })(); 
}); 
+0

是的,我喜歡這種方式,很乾淨,非常感謝。我只在過去的幾個月嚴重使用jQuery,所以我學習堆歡呼:) – IEnumerable

6

validate功能局部於您傳遞給jQuery ready處理函數的函數。

如果你這樣做:

window.validate = function(){ /*....*/ }; 

,你將能夠從控制檯訪問。但除非只是爲了調試,否則污染全球範圍並不是一個好習慣。

1

那麼,有沒有什麼原因你需要在文檔準備好的功能? 只在這些括號(範圍)內存在該函數。只是將其移出,或者全部它只內的document.ready

相關問題