所以,我有這個簡單的代碼一定的參考價值回調函數
$('#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
有一個範圍問題。由於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);
}
});
我不知道這會做你想要什麼,即使i
是可利用的 - 如果你希望你的回調函數來影響事件處理程序連接到元素,使用$(this)
:
$('#info_name'+i).show("slide", {direction: "right"}, 1000, function(){
$(this).show('slide',{direction: "up"}, 1000)
});
不,我需要使用我的變量,因爲它有當前元素ID號。它會出現在其他地方,不同的元素。 – NoNameZ 2012-04-05 15:18:06
如果您發佈了更大的代碼段,它可能會有幫助。 – 2012-04-05 15:13:11
顯示您的完整代碼。你已經聲明瞭我的位置,並且發佈了一段以「info_name」開頭的id。 – DG3 2012-04-05 15:13:45
如果你在上面的函數中包含'var i = 0;',那麼'i'在回調。 – 2012-04-05 15:15:47