をコールバックにいくつかの値、私はこの単純なコードだから、機能
$('#info_name'+index).show("slide", {direction: "right"}, 1000, function(){
$('#info_info'+index).show('slide',{direction: "up"}, 1000);
});
i
が
をコールバックにいくつかの値、私はこの単純なコードだから、機能
$('#info_name'+index).show("slide", {direction: "right"}, 1000, function(){
$('#info_info'+index).show('slide',{direction: "up"}, 1000);
});
i
が
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);
}
});
var i=0
変数が、コールバック関数の上部に宣言されています
私はi
が利用可能であったとしても、これはあなたがやりたいだろうか分からない - あなたは、コールバック関数をしたい場合$(this)
を使用して、イベントハンドラが接続されている要素に影響を与えるために:
$('#info_name'+i).show("slide", {direction: "right"}, 1000, function(){
$(this).show('slide',{direction: "up"}, 1000)
});
いいえ、私は変数を使用する必要があります、それは現在の要素のID番号があるためです。それは、異なる要素の異なる他の場所に表示されます。 – NoNameZ
大きなコードスニペットを送信した場合は、役立つ可能性があります。 –
あなたのフルコードを表示してください。あなたが私を宣言し、 "info_name"で始まるIDを持つhtmlの一部を投稿する場合 – DG3
上記の関数の包含スコープに 'var i = 0;'がある場合、 'i'は間違いなくコールバック –