【发布时间】:2012-10-19 07:40:57
【问题描述】:
我正在尝试将相同的 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)
【问题讨论】:
-
它是怎么破的?有没有报错?
-
getJSON 方法之外的 selectedId 是什么? (所以,分配后
console.log($(this).attr('id'));?) -
谢谢!在它给 StartDate 然后 undefined