我正在尝试将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]);
});
}
}
如何分别对所有元素进行onChange工作?
答案 0 :(得分: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);
}
}
它会创建一个新范围,因此当我在原始范围内进行更改时,它不会在旧范围内更改。
答案 1 :(得分:0)
$('select[id*="bodysys"]').each(function (index) {
$(this).change(function () {
if ($("option:selected", this).val() == "99")
enabletext($('input[id$="bodysys' + (index + 1) + 'spec"]')[0]);
});
});
这种方式也有效。