我通过json为4个下拉列表在客户端获取有关页面加载的数据。
我需要能够将下拉列表中的内容保存到变量中,以便以后在页面上使用。
你看,list2依赖于list1。因此,当我在list1中选择一个值时,我需要过滤掉列表2中的相应值。
完成后,我将用过滤的内容替换list2的全部内容。
如果用户需要进行“重做”,我只需将完整值再次移至下拉列表,直到再次过滤掉为止。
问题是我想确保如何正确地保存值(因为它们将是一个id和文本值)只是一个var变量。
更进一步,当我需要将完整列表放回实际的下拉列表中时,jQuery语法会做什么?
为了收集我发现要过滤匹配的值集合,我假设我只有一个foreach循环,但是如何将它分配给我的过滤下拉列表?它基本上就像在服务器端的C#中的下拉列表中添加值一样。
非常感谢......
答案 0 :(得分:0)
您的问题尚不清楚,但如果我已正确阅读,您需要将<select/>
的当前内容保存到变量中,以便在后面使用它。
请参阅此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以及保存的数据。