0

内で実行される次のコード行があります$(document).ready

$('#sliding_menu_area').toggle(effect, reAlign);

reAlign私のファイルの$(document).readyメイン関数の外側で宣言されている関数です。.js

tag内部でも宣言されているという変数が$(document).readyあり、その変数を関数に渡す必要がありreAlignます。私は試した

$('#sliding_menu_area').toggle(effect, reAlign(tag));

しかし、うまくいきませんでした。tag変数をグローバルとして宣言して、外部で宣言された関数$(document).readyがアクセスできるようにすることはできますか? これまでのところ、内部で宣言された関数は$(document).ready問題なくアクセスできます。

何か案は?

4

4 に答える 4

3
$('#sliding_menu_area').toggle(effect, reAlign(tag));

コードは引数で実行reAlignされtag、戻り値をtoggle(2 番目の引数として) に渡します。

$('#sliding_menu_area').toggle(effect, function() { reAlign(tag); });
于 2012-05-15T17:16:39.740 に答える
2

私は通常、何かをグローバルにすることは避けます...または少なくともグローバル名前空間を可能な限り節約します。たとえば、Page.notify("some message") などのさまざまな関数に使用する Page クラスがあります。ページ全体から何かにアクセスできるようにする必要がある場合は、Page.Tag のような変数を作成します。reAlign メソッドのタグのみが必要な場合は、Karoly の提案に従い、真にグローバルである必要のないものをグローバルにすることは避けてください。

于 2012-05-15T17:19:05.880 に答える
1

Karoly の答えは機能します。別の方法として、次のことを行うこともできます: https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Function/bind

$('#sliding_menu_area').toggle(effect, reAlign.bind(window, tag));

これにより、関数が呼び出されたときに、関数の最初の引数として変数とタグとして呼び出されるように、関数がバインドwindowされthisます。基本的には、Karoly が提案したものと同じですが、イディオムが異なります。

于 2012-05-15T17:20:24.667 に答える
0

reAlign関数が DOM 要素 ( として渡される) を知る必要がある場合は、this次を使用することをお勧めします。

$('#sliding_menu_area').toggle(effect, function () {
  reAlign.call(this, tag);
});
于 2012-05-15T17:20:23.240 に答える