在JS中,你寫一個for循環的時候,內部的循環變數I其實是會保存在它運行的函數或類別內的,所以你會發現你給元素批量綁定事件的時候,出現i=最後一個循環變數的值,這就很坑爹啊,解決的方案有2鐘, 思路就是:把這個循環變數保存起來,不要讓它的作用域在整個函數,而是在循環體內1.使用閉包(如果你不懂閉包,請打開百度:www.baidu.com) 2.使用with關鍵字,with語法是with( obj ) { //使得可以在此直接存取obj的屬性,不用加obj.XXX } 程式碼範例: 複製程式碼 程式碼如下: Untitled Page <BR>$(document).ready(function () { <BR>function Ev(i){ <BR>this.index = i; <BR>this.click = function (){ <BR>alert(this.index ); <BR>} <BR>} <BR>for(var k=1; k<4; k ){ <BR>//閉包函數1 <BR>// (function(x){ <BR>// $("#div" x).click (function(){ <BR>// f(x); <BR>// }); <BR>// }(k)); <BR>//使用with關鍵字<BR>with ({i : k}){ <BR>$("#div" i).click(function(){ <BR>f(i); <BR>}); <BR>} <BR>} <BR>var f = function (m){ <BR>alert(m); <BR>} <BR>}); <BR> 1 2 3