jquery循环不起作用

时间:2013-04-09 15:32:19

标签: 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;
}

1 个答案:

答案 0 :(得分:5)

因为当循环结束时,m的全局值将设置为8,并且当事件被触发时,div选择器将为input[id="sel'+8+'"]'

您可以使用attribute selector with wild card绑定事件。您可以通过从id删除div_sel来获取id中的索引,并使用索引生成输入ID并使用id selector

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