在循环内初始化onchange事件-Javascript

在循环内初始化onchange事件-Javascript,javascript,jquery,Javascript,Jquery,我试图将onChange事件绑定到循环中的7个下拉列表中。但是,当任何下拉列表发生更改时,最后一个下拉列表的onChange事件总是被执行 $(function () { for (var i = 1; i <= 7; i++) { $('select[id$="bodysys' + i + '"]').change(function () { if (this.value == "99") enabletex

我试图将onChange事件绑定到循环中的7个下拉列表中。但是,当任何下拉列表发生更改时,最后一个下拉列表的onChange事件总是被执行

$(function () {
    for (var i = 1; i <= 7; i++) {
        $('select[id$="bodysys' + i + '"]').change(function () {
            if (this.value == "99")
                enabletextbox($('input[id$="bodysys' + i + 'spec"]')[0]);
        });
    }
}
$(函数(){

对于(var i=1;i而言,这称为最后一个问题,并使用闭包解决:

$(function () {
    for (var i = 1; i <= 7; i++) {
        (function (i) {
            $('select[id$="bodysys' + i + '"]').change(function () {
                if (this.value == "99")
                    enabletextbox($('input[id$="bodysys' + i + 'spec"]')[0]);
            });
        })(i);
    }
}
$(函数(){
对于(var i=1;i
这样也行

$('select[id*="bodysys"]').each(function (index) {
        $(this).change(function () {
            if ($("option:selected", this).val() == "99")
                enabletext($('input[id$="bodysys' + (index + 1) + 'spec"]')[0]);
        });
    });