2013-04-09 4 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

общий для переменных переменных пробелов. должен быть дубликат –

+0

возможный дубликат [странные вещи в JavaScript для «] ​​(http://stackoverflow.com/questions/3150010/strange-things-in-javascript-for) –

ответ

6

Поскольку глобальное значение т будет установлен 8 когда заканчивается цикл и когда событие вызывается ваш div селектор будет input[id="sel'+8+'"]'

Вы можете использовать attribute selector with wild card для привязки события. Вы можете получить индекс из id, удалив div_sel с id и используйте индекс для ввода идентификатора входа и используйте id selector.

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