2010-03-04 12 views
26

कैसे आप समारोह कहते हैं lol() $ (document) .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

यह वैश्विक बनाने के लिए खिड़की वस्तु पर समारोह को परिभाषित एक और समारोह दायरे के भीतर से:

$(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

मुझे लगता है कि जब दूसरे उदाहरण के भीतर से वैश्विक समारोह को परिभाषित करने की कोशिश कर रहा, तो आप इस का उपयोग कर सकते अस्पष्टता से बचने के: 'window [ 'lol'] = समारोह () {/ * समारोह का शरीर * /}; '। – Tadeck

+0

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

+0

verrrrrrrrrry goooooooooooooood यह – ashkufaraz

3

लघु संस्करण: आप नहीं कर सकते, यह दायरे से बाहर है। परिभाषित इस तरह से अपनी विधि तो यह उपलब्ध है:

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

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

क्या मामले के बारे में जहां प्रोटोटाइप jQuery के साथ स्थापित किया गया है और हमारे पास jQuery के लिए सेट noconflicts है?

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

अब हम कहीं से भी lol कॉल कर सकते हैं, लेकिन हम प्रोटोटाइप के साथ कोई विरोध परिचय दिया?

3

आपको इसकी आवश्यकता नहीं है - अगर किसी दस्तावेज़ को दस्तावेज़ के बाहर परिभाषित किया गया है। रीडी - लेकिन आप इसमें कॉल करना चाहते हैं दस्तावेज़। रीडी - यह है कि आप इसे कैसे करते हैं - इन उत्तरों ने मुझे गलत दिशा में ले जाया , फ़ंक्शन का नाम दोबारा फ़ंक्शन टाइप न करें।

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

कहाँ fnGetContent यहाँ है:

 function fnGetContent(keyword) { 
      var NewKeyword = keyword.tag; 
      var type = keyword.type; 
      $.ajax({ ....... 
+3

यह वास्तविक प्रश्न के विपरीत का जवाब दे रहा है, लेकिन इसे कम नहीं किया गया है क्योंकि यह अभी भी उन लोगों के लिए कुछ हद तक सहायक है। – Michael

+0

मैं डाउनवॉटेड क्योंकि यह सवाल का जवाब नहीं देता है – bonez

संबंधित मुद्दे