jQuery通过循环初始化onchange事件

etl*_*lds 2 javascript jquery

我正在尝试使用以下代码将onchange事件绑定到7个下拉列表.但是当bodysys1改变时,i = 8,所以这__CODE__是未定义的.

$(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]);
        });
    }
}
Run Code Online (Sandbox Code Playgroud)

显然,这不是正确的方法.

cal*_*rae 7

这被称为最后一个唯一的问题,并使用闭包解决:

$(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);
    }
}
Run Code Online (Sandbox Code Playgroud)

它创建了一个新的范围,因此当我在原始范围中进行更改时,它将不会在旧范围中更改.