2011-12-27 7 views
1

jQueryでシンプルな機能があり、スコープをテストしたいと思っていました。jQueryのスコープとiOS

$(function() { 
    function showTest() { 
      alert('test'); 
    } 

    showTest(); // within scope so its OK 
}); 

$(function() { 
    showTest(); // out of scope 
} 

showTest(); // out of scope 

最初のjQueryステートメント内にあるshowTest()はどのように参照できますか? stringByEvaluatingJavaScriptFromStringを使用してshowTestにアクセスしようとしていますが、私はそれを打つことはできません。私は範囲外のメソッドの両方を試してきたし、jquery内のメソッドを参照する別の方法について考えることはできません。

答えて

0

外部コードから変数と関数を分離することは、匿名関数がとするととなります。あなたは匿名関数のshowTest外を実行する場合は、匿名関数を削除する必要があります。

function showTest() { 
    alert('test'); 
}; 

$(document).ready(function() { 

    (function() { 
     showTest(); // ok 
    })(); 

    showTest(); // ok 
}); 
+0

は、どのような場合は、ここでそのラップの内側$(ドキュメント).ready(関数(){... jqueryのもの.. 。});どうすればそれを回避できますか?はい、私は基本的な例を提供していますが、showTestはその無名関数内で複雑な何かを行います – fes

+0

もう一度:無名関数の全体は変数を分離することです。それらを分離したくない場合は、そこに置かないでください。あなたの関数は '$(document).ready ...'の外で宣言することができ、問題を引き起こさずに関数の内部で呼び出すことができます。 – Blazemonger

+0

$(document).ready(function(){})またはそれに相当する$(function(){})なしでjqueryを使用する基本的な例を教えてください。私が尋ねる理由は、このステートメントがなければjqueryは実行されないということです。その場合、jquery内のメソッドを無名関数として呼び出すことができないと言っているのですか?それは事実だと思われますが、別のアプローチを考えていません。ありがとう。 – fes