2011-07-21 23 views
2

入れ子関数に情報を渡す方法はありますか?問題は、jQueryを使用してオブジェクトをアニメーション化して、削除した後にDOMからオブジェクトを削除したいということです。しかし、ネストした関数に情報を渡す方法はありません。 I最初にかかわらず入れ子関数に変数を渡す方法

tab = this.tab //this.tab is a dom element 
$(this.tab).effect('drop',null,null, function(tab) 
{ 
    $(tab).remove() 
}) 

人々は、私は、この関数はクラスの一部であるグローバルプットの要素を格納し、でこの関数を呼び出すことができ、多くのオブジェクトが存在し得ることを示唆している仕事と怒鳴るが、運、同時。

ありがとうございました!あなたは、単にtabは「ネストされた関数」の外で定義されていますが、JavaScriptがクロージャをサポートしているので、関数は自身と同じスコープで定義された変数にアクセスできることを

var tab = this.tab 
$(tab).effect('drop', null, null, function() { $(tab).remove(); }); 

注を行うことができるはずクロージャを使用して

+0

閉鎖内の 'this'はアニメーション化されているオブジェクトを参照していませんか? jQueryは文脈を設定するのに賢明です。クロージャ内で 'console.log'ging' this'を試してみてください。 –

答えて

9

。つまり、tabにアクセスできるようになります。 は、コードが呼び出されるコンテキストを参照するため、ではなく、this.tabです。

補遺:私は(私が知っている、奇妙な)jQueryの-男ないんだけど、私はあなたがeffect()に渡す機能、すなわち機能thisの内側(tab要素のコンテキスト内で実行されることを想像を指し、 tab要素)。もしそうなら、おそらくできるでしょう

$(this.tab).effect('drop', null, null, function() { $(this).remove(); }); 
+0

ありがとうございました! JavaScriptsスコープは私を混乱させる。また、通常はjQueryの人ではありませんが、altraのクイック開発が必要な場合は、jQueryライブラリが便利です。 – kjones1876

関連する問題