だから、私はこの単純なコードを持っています
$('#info_name'+index).show("slide", {direction: "right"}, 1000, function(){
$('#info_info'+index).show('slide',{direction: "up"}, 1000);
});
はi
単なる変数として上位に宣言されていますvar i=0
が、コールバックでは、関数が表示されません...
だから、私はこの単純なコードを持っています
$('#info_name'+index).show("slide", {direction: "right"}, 1000, function(){
$('#info_info'+index).show('slide',{direction: "up"}, 1000);
});
はi
単なる変数として上位に宣言されていますvar i=0
が、コールバックでは、関数が表示されません...
たとえ利用可能であったとしても、これがあなたが望むことをするかどうかはわかりませんi
-コールバック関数がイベントハンドラーが接続されている要素に影響を与えるようにしたい場合は、次を使用して$(this)
ください:
$('#info_name'+i).show("slide", {direction: "right"}, 1000, function(){
$(this).show('slide',{direction: "up"}, 1000)
});
にスコープの問題があり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/ </ p>
アップデート:
あなたのコールバックはどこにありますか...?質問から削除したようです。
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);
}
});