我有这个选择列表:
<select url="/Admin/SubCategories" name="TopParentId" id="ParentList">
<option value="">Please select a parent category</option>
<option value="1" selected="selected">New Store</option>
<option value="2">Extensions</option>
<option value="3">Remodel</option>
<option value="4">Bespoke Signage</option>
<option value="5">Tactical Signage</option>
<option value="6">Size Chart</option>
<option value="7">Contact Info</option>
</select>
如您所见,选项1被标记为已选中。当我更改选择时,我使用此代码执行ajax调用以获取一些值来填充新的选择列表:
$("#ParentList").unbind("change");
$("#ParentList").change(function() {
var itemId = $(this).val();
var url = $(this).attr("url");
var options;
$.getJSON(url, itemId, function(data) {
var defaultoption = '<option value="0">Please select a sub-category</option>';
options += defaultoption;
$.each(data, function(index, optionData) {
var option = '<option value="' + optionData.valueOf + '">' + optionData.Text + '</option>';
options += option;
});
$("#SubParentList").html(options);
});
});
我的问题是每当我更改选择时,itemId始终是选项1的id,因为它被标记为选中。它没有获取正在更改的选项的值。
有人可以告诉我他们的知识。
此致
让 - 菲利普
答案 0 :(得分:3)
我遇到了同样的问题并找到了一个很好的解决方法:
var before= $('#selectmenu').html();
$('#selectmenu').html("");
$('#selectmenu').html(before);
如果这样做,则必须刷新选择框。
答案 1 :(得分:1)
我认为这就是您所需要的 - 获取所选的选项值,尝试
var itemId = $(this).find('option:selected').val();
答案 2 :(得分:1)
我相信你的问题在于其他地方。我刚测试了您的代码(不包括JSON),itemId
正按预期设置为所选项目。
var itemId = $(this).val();
在更改时获得了正确的值。
请注意,我假设您已在$(document).ready(function(){});
获取价值的工作示例:http://jsfiddle.net/aqHrc/