2009-11-26 149 views
0

我想分配一個不同的數字給jquery中的不同回調函數。JQuery回調問題

for (i=o;i<types.length;i++) { 
    $('#ajax'+types[i]+'Div').html('Loading...').load('searchAjax.php','new=u',function() { $(this).find('select').change(function() { AjaxDiv(i); }) }); 
} 

每次運行這段代碼時,對於每次調用ajaxDiv,我都是5,因爲它調用的是全局變量。我不確定是否可以更改i的範圍,或者是否有方法在更改函數中打印值。有任何想法嗎?

預先感謝您!感恩節快樂!

安德魯

+0

見http://stackoverflow.com/questions/1451009/javascript-infamous-loop-problem和http://stackoverflow.com/問題/ 341723 /事件處理程序,裏面的一個JavaScript的循環需要封閉和約80個其他問題。 (提示:你需要關閉) – 2009-11-26 15:52:41

+0

雖然其他人肯定回答了這個問題,但另一個問題可能是你已經設置我等於字母O ... – Gausie 2009-11-26 16:34:40

+0

@ Gausie:o是新的0 – 2009-11-26 18:25:55

回答

3

回調函數都指向同一個i變量,當循環結束後,他們將被執行。

你必須捕捉到環路上i變量:

for (i=o;i<types.length;i++) { 
    (function (i) { 
    $('#ajax'+types[i]+'Div').html('Loading...').load('searchAjax.php','new=u', 
    function() { 
     $(this).find('select').change(function() { AjaxDiv(i); }) 
    }); 
    })(i); 
} 
+0

有多少次你在SO上解釋過這個嗎?我們非常需要這個FAQ。 – 2009-11-26 15:54:19

+4

是的,太多的時間,通過語言的常見問題將會很好... http://stackoverflow.com/questions/1734749/ http://stackoverflow.com/questions/643542/ http://stackoverflow.com/questions/1582634/ http://stackoverflow.com/questions/1331769/ http://stackoverflow.com/questions/1552941/ http://stackoverflow.com/questions/750486/ http:// stackoverflow問題/ 933343/ http://stackoverflow.com/questions/1579978/ http://stackoverflow.com/questions/1413916/ – CMS 2009-11-26 15:58:37

+1

聖潔的廢話。永遠不要刪除該評論。那裏有參考點。 – 2009-11-26 16:05:42