我正在尝试将相同的jQuery和JSON ASP.NET MVC3 方法附加到两个不同的<select>
元素:
<select id="StartYear">
<option value="">Select Year</option>
<option value="2000">2000</option>
<option value="2001">2001</option>
</select>
<select id="StartMonth">
<option value="">Select Month</option>
</select>
这同样适用于ID 为"EndYear"和"EndMonth"<select>
的元素。
我想将相同的 jQuery 函数附加到“开始年份”和“结束年份”:
$('[id$="Year"]').change(function () {
var selectedYear = $(this).val();
var selectedId = $(this).attr('id')
if (selectedYear != null && selectedYear != '') {
$.getJSON('@Url.Action("Months")', { year: selectedYear }, function (months) {
var monthsSelect = $('#StartMonth');
if (selectedId == 'EndYear') {
monthsSelect = $('#EndMonth');
}
monthsSelect.empty();
daysSelect.prepend("<option text='-- select month --' value='' selected='selected'></option>");
$.each(months, function (index, month) {
monthsSelect.append($('<option/>', {
value: month.value,
text: month.text
}));
});
});
}
});
但是,此代码不起作用。我用 Bugzilla 对其进行了调试,我发现这种情况(selectedId == 'EndYear')
会破坏该功能。变量 selectedId 在闭包范围内,但我不知道如何将其带入函数范围内。否则我不知道这是什么原因。请记住,如果没有这种情况,代码就可以正常工作(当然只是使用#StartMonth)