2013-04-09 102 views
1

爲什麼這項工作:jQuery的循環不工作

var m = 1; 
jQuery('#div_sel'+m).click(function() { 
    jQuery('input[id="sel'+m+'"]').val('blahblah'); 
}); 

但不是這樣的:

var m = 1; 
while (m < 8) { 
    jQuery('#div_sel'+m).click(function() { 
     jQuery('input[id="sel'+m+'"]').val('blahblah'); 
    }); 
    m += 1; 
} 
+2

通用於循環變量範圍的錯誤。必須有重複 – 2013-04-09 15:33:58

+0

可能的重複[在JavaScript中的奇怪的事情「](http://stackoverflow.com/questions/3150010/strange-things-in-javascript-for) – 2013-04-09 15:36:46

回答

6

因爲m的全局值將被設置爲8循環完成時,當事件被觸發您的div選擇器將爲input[id="sel'+8+'"]'

您可以使用attribute selector with wild card來綁定事件。您可以從id中刪除div_selid獲得索引,並使用索引作爲輸入ID並使用id selector

jQuery('id^=div_sel]').click(function() { 
    index = this.id.replace('div_sel', ''); 
    jQuery('#sel'+ index).val('blahblah'); 
});