jquery DropDownLists

时间:2012-07-06 00:58:53

标签: jquery drop-down-menu

我通过json为4个下拉列表在客户端获取有关页面加载的数据。

我需要能够将下拉列表中的内容保存到变量中,以便以后在页面上使用。

你看,list2依赖于list1。因此,当我在list1中选择一个值时,我需要过滤掉列表2中的相应值。

完成后,我将用过滤的内容替换list2的全部内容。

如果用户需要进行“重做”,我只需将完整值再次移至下拉列表,直到再次过滤掉为止。

问题是我想确保如何正确地保存值(因为它们将是一个id和文本值)只是一个var变量。

更进一步,当我需要将完整列表放回实际的下拉列表中时,jQuery语法会做什么?

为了收集我发现要过滤匹配的值集合,我假设我只有一个foreach循环,但是如何将它分配给我的过滤下拉列表?它基本上就像在服务器端的C#中的下拉列表中添加值一样。

非常感谢......

2 个答案:

答案 0 :(得分:0)

您的问题尚不清楚,但如果我已正确阅读,您需要将<select/>的当前内容保存到变量中,以便在后面使用它。

查看jQuery .clone()


请参阅此working Fiddle示例! 显示克隆的option被附加到div

假设这个HTML:

<select id="foobar">
  <option value="1">01</option>
  <option value="2">02</option>
  <option value="3">03</option>
  <option value="4">04</option>
  <option value="5">05</option>
</select>

您可以使用以下方式获取select内容:

$(function() {
  var $selectContents = $('#foobar option').clone();
});

答案 1 :(得分:0)

如果你想实际获取值并将它们放入数组中,你可以尝试这样的事情。

function getValues(dropDownId) {
    var values = new Array();
    $("#" + dropDownId).children().each(function (i, element) {
        values[i] = {id: element.id, value: element.value};
    });
    return values;
}

function setValues(dropDownId, values) {
    var dropDown = $("#" + dropDownId);
    for (var i = 0; i < values.length; i++) {
        var newItem = $("<option></option>");
        newItem.prop("id", values[i].id);
        newItem.text(values[i].value);
        dropDown.append(newItem);
    }
}

当你想要获取值时,只需调用getValues,传入select元素的id。保存返回的值,然后调用setValues并传入相同的id以及保存的数据。