2010-03-04 8 views
26

당신은 예를 들어 $ (문서) .ready() 외부에서() 롤 함수를 호출하려면 어떻게 외부 :그것을

$(document).ready(function(){ 
    function lol(){ 
    alert('lol'); 
    } 
}); 

이 시도 :

$(document).ready(function(){ 
    lol(); 
}); 

그리고 단순히 :

lol(); 

그것은 같은 외부 자바 스크립트 내에서 호출해야합니다

,
function dostuff(url){ 
    lol(); // call the function lol() thats inside the $(document).ready() 
} 

답변

48

다른 함수의 범위 내에서 글로벌 만들기 위해 윈도우 객체의 기능을 정의 프로토 타입이 jQuery를 함께 설치됩니다

$(document).ready(function(){ 
    window.lol = function(){ 
    alert('lol'); 
    } 
}); 
+0

이 간단한 솔루션이 저에게 효과적입니다. –

+1

시간이 절약되었습니다. – Oritm

+0

내가 찾은 혼란스럽고 복잡한 대답 중에서, 이것이 나를 위해 일한 유일한 것입니다. – jyoseph

37

기능이 정의 된 블록 외부에서는 범위를 벗어 났으므로이를 호출 할 수 없습니다.

그러나 함수를 정의 할 필요는 없습니다. 왜 단순히 :

function lol() { 
    alert("lol"); 
} 

$(function() { 
    lol(); //works 
}); 

function dostuff(url) { 
    lol(); // also works 
} 

당신 다음과 같이 전 세계적으로 기능을 정의 할 수 있습니다 :

작동하지만 권장되지
$(function() { 
    lol = function() { 
    alert("lol"); 
    }; 
}); 
$(function() { 
    lol(); 
}); 

. 전역 네임 스페이스에서 무언가를 정의하려면 첫 번째 방법을 사용해야합니다.

+1

, 당신이 사용할 수있는 모호성을 피하기 위해 : fnGetContent가 여기에있다

 $(document).ready(function() { fnGetContent(); }); 

) {/ * 함수 본문 * /};'. – Tadeck

+0

http://api.jquery.com/ready/ –

+0

verrrrrrrrrrrry goooooooooooooood이 – ashkufaraz

3

짧은 버전 : 범위를 벗어났습니다. 정의이 같은 당신의 방법은 그래서 가능한 :

function lol(){ 
    alert('lol'); 
} 

$(function(){ 
    lol(); 
}); 
0

어떤 경우에 대한 noconflicts가 jQuery로 설정 되었습니까?

jQuery(document).ready(function($){ 
    window.lol = function(){ 
      $.('#funnyThat').html("LOL"); 
    } 
}); 

이제 어디서나 lol을 호출 할 수 있지만 Prototype과 충돌이 있습니까?

3

기능이 Document.Ready 외부에 정의되어 있지만 Document.Ready로 전화를 걸려면이 방법을 사용하십시오.이 대답은 잘못된 방향으로 나를 인도했습니다. 함수의 이름을 다시 입력하지 마십시오. (`창 [ '롤'] = 기능 :

두 번째 예제 내에서 전역 함수를 정의 할 때 내가 생각
 function fnGetContent(keyword) { 
      var NewKeyword = keyword.tag; 
      var type = keyword.type; 
      $.ajax({ ....... 
+3

이것은 실제 질문의 역으로 ​​대답하고 있지만, 그것을 찾는 사람들에게 여전히 도움이되기 때문에 downvoted하지 않았습니다. – Michael

+0

질문에 답할 수 없기 때문에 나는 다운 받았다. – bonez

관련 문제