ダイナミックアコーディオンを作成しようとしています。私の問題は、forループ内のi
変数への参照を取得できないようです。私はそれが範囲の問題であることを知っていますが、私はこの閉鎖がトリックを行うだろうと思っていました....誰かがこれが私を完全に狂気にさせてくれているので、助けてください。クロージャを使用してforループ内でクリック機能を動的に追加します
jQuery(function(){
var tables = jQuery('table');
var tableHeadings = jQuery('h3');
for(i =0 , ii = tableHeadings.length; i < ii; i++){
(function(){
var index = i;
tables.eq(index).addClass('table-' + index);
tableHeadings.eq(index).click(function(){
tables.eq(index).slideToggle();
});
})();
}
});
は、あなたが、これは失敗した場所の実際の例を持っていますか?これはAFAIKを動作させるはずです。 – Matt
ここでクロージャーが必要なのはなぜですか? forループ内のコードを直接実行するだけです。 – asawyer
@asawyer:そうでなければクリックハンドラでは、 'i'(または' index')が常に最後の値になるためです。 – Matt