web-dev-qa-db-ja.com

$(document).ready内で関数を呼び出す方法

_jQuery._を使用するWebアプリをデバッグしようとしています

Firebugでは、$(document).ready内の関数を呼び出します。

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

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

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

Firebugコンソールでvalidate()と入力しますが、関数ではありません

val()と入力すると、正常に機能します。

コンソールからvalidateを呼び出すにはどうすればよいですか?

23
IEnumerable

そのような関数を呼び出すのではなく、単にdefine関数を呼び出します。

正しいアプローチは、document.readyの外部で関数を定義し、内部で呼び出すことです。

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

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

別のオプションはself invokeのような関数です:

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

validate関数は、jQuery readyハンドラーに渡した関数に対してローカルです。

もしあなたがそうするなら:

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

コンソールからアクセスできるようになります。ただし、デバッグだけを目的としない限り、グローバルスコープを汚染することはお勧めできません。

7
Tim

さて、ドキュメント内でその機能が必要な理由はありますか?これらの括弧(スコープ)内にのみ関数が存在します。移動するか、ドキュメント内でのみ移動します。

1
monxas