2014-05-04 61 views
0

工作,我有這個功能的jQuery:功能並不在Javascript

$(document).ready(function(){ function MyFunction() {alert('Hello!');} }); 

(例如只)

,但是,我想這種方式調用這個函數與普通Javscript:

if(x == y){MyFunction();} 

(僅舉例來說)

和i'ts不起作用。

然而,當我嘗試:

function MyFunction(){alert('Hello!');} if(x == y){MyFunction();} 

(無jQuery的功能)

它的工作。

爲什麼?

回答

0

這一行:

if(x == y){MyFunction();} 

也應該在document.ready聲明。

,如果你把它外面實際上是在函數定義之前,它將運行,因此它會失敗。

2

如果你把函數。就緒(外)並調用它的功能齊全,將工作,如果你把它在就緒(),並調用它的準備之外,它會給你一個錯誤,你可能使用jQuery代碼在ready狀態之外聲明一個函數並在裏面調用它。

function MyFunction(){ 
    alert("hello!!"); 
    } 
    //on ready 
    $(document).ready(function(){ 
    if(x==y) 
    MyFunction(); 
    }); 
1

我理解你的問題,像這樣{但真不明白你正在尋找恕我直言,什麼}

定義功能:

function MyFunction(){alert('Hello!');} 

調用它的文件準備:

$(MyFunction); 

現在,只要你願意,你可以使用:

if(x == y){MyFunction();} 
0

Lesonchi有它的權利。問題是'範圍'。

$(document).ready(...)調用需要的函數,而它自己的範圍(僅使用Javascript功能具有作用域)。所以,要傳遞到該調用的函數中定義什麼是函數內纔有效。

根據你的問題,我假設你希望能夠在代碼中的其他地方調用MyFunction方法,而不是在$(document).ready()--因此,在該調用之外定義它會給它的'全局'範圍,因此可以在代碼中其他地方使用:

function MyFunction(){ /* do something */ } 

$(document).ready(function(){ 
    MyFunction(); // call it in this scope 
}); 

// call it in 'global' scope 
if (x == y) { 
    MyFunction(); 
} 

另請參見:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions_and_function_scope