2012-04-05 9 views
1

をコールバックにいくつかの値、私はこの単純なコードだから、機能

$('#info_name'+index).show("slide", {direction: "right"}, 1000, function(){ 
    $('#info_info'+index).show('slide',{direction: "up"}, 1000); 
}); 

i

+1

大きなコードスニペットを送信した場合は、役立つ可能性があります。 –

+0

あなたのフルコードを表示してください。あなたが私を宣言し、 "info_name"で始まるIDを持つhtmlの一部を投稿する場合 – DG3

+0

上記の関数の包含スコープに 'var i = 0;'がある場合、 'i'は間違いなくコールバック –

答えて

2

iに範囲の問題があります。 iが外部スコープで宣言されているので、すべてのコールバックは同じiを参照します。つまり、iが変更された場合、すべてのコールバックの参照はiに変更されます。

あなたができることは、コールバックを生成する関数を作成することです。この場合、新しいスコープが作成されるため、iの値が保持されるためです。

元の質問に基づいて、コードを少し簡略化しました。それを編集したので、あなたはきた、と私はもうコールバックを見つけることができません...しかし、これは屋

var getCallback = function(index) { 
    return function(){ 
     // You can see how this index is being captured correctly in Javascript console 
     console.log(index); 
     $('#name' + index).show('slide',{direction: "up"}, 1000) 
    }; 
}; 

for (var i = 0; i < 3; ++i) { 
    $('#name'+i).show("slide", {direction: "right"}, 1000, getCallback(i)); 
} 

JSFiddle役立つかもしれない願っています:http://jsfiddle.net/vd9Mj/

UPDATE:

あなたのコールバックがありますが。 ..?質問から削除したようです。

var i=-1; 

var doStuff = function(index) { 
    $('.third').append('<div class="showinfo"><h3 id="info_name'+i+'" class="info_name">'+contact_name[index]+'</h3><span class="info_info" id="info_info'+index+'"><strong>'+contact_information[0][0]+'</strong>: '+contact_number[index]+'</span></div>'); 
    $('#info_name'+index).show("slide", {direction: "right"}, 1000); 
    $('#info_info'+index).delay(1000).show('slide',{direction: "up"}, 1000, function() { 
     // Insert code for callback. 
    }); 
}; 

$.each(contact_status, function(key, value){ 
    i++; 
    if(value == info_id){ 
     doStuff(i); 
    } 
}); 
​ 
3
...私はそれを見ることができないようにだけ、 var i=0変数が、コールバック関数の上部に宣言されています

私はiが利用可能であったとしても、これはあなたがやりたいだろうか分からない - あなたは、コールバック関数をしたい場合$(this)を使用して、イベントハンドラが接続されている要素に影響を与えるために:

$('#info_name'+i).show("slide", {direction: "right"}, 1000, function(){ 
     $(this).show('slide',{direction: "up"}, 1000) 
}); 
+0

いいえ、私は変数を使用する必要があります、それは現在の要素のID番号があるためです。それは、異なる要素の異なる他の場所に表示されます。 – NoNameZ

関連する問題