JQuery SelectList Option Changed不刷新

时间:2010-06-08 19:29:27

标签: jquery

我有这个选择列表:

<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,因为它被标记为选中。它没有获取正在更改的选项的值。

有人可以告诉我他们的知识。

此致

让 - 菲利普

3 个答案:

答案 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(){});

中包含了上面的js代码

获取价值的工作示例:http://jsfiddle.net/aqHrc/