从ajax请求中得到此回复
val1,val2,val3
并有一个id等于
的id列表<select multiple>
<option id="val1">val1</option>
<option id="val4">val4</option>
<option id="val5">val5</option>
<option id="val2">val2</option>
<option id="val6">val6</option>
<option id="val1">val3</option>
</select>
我怎样才能给出选中attr的ajax响应中的所有选项id? 像这样:
<select multiple>
<option id="val1" selected="selected">val1</option>
<option id="val4">val4</option>
<option id="val5">val5</option>
<option id="val2" selected="selected">val2</option>
<option id="val6">val6</option>
<option id="val1" selected="selected">val3</option>
</select>
我希望这很清楚! 非常感谢提前
答案 0 :(得分:4)
尝试使用filter(),您还需要设置select的multiple属性以允许multiple选择。
<强> Live Demo 强>
var arr = 'val1,val2,val3'.split(',');
$('select option').filter(function(){
return arr.indexOf(this.id) != -1;
}).prop('selected', true);
选择的多个属性。
此布尔属性表示可以选择多个选项 在列表中。如果未指定,则只能有一个选项 一次选择Reference。
jQuery过滤器()
给定一个表示一组DOM元素的jQuery对象, .filter()方法从子集中构造一个新的jQuery对象 匹配元素。提供的选择器针对每个进行测试 元件;匹配选择器的所有元素都将包含在 结果
答案 1 :(得分:1)
你需要做两件事:
将id
中的所有option
属性更改为value
。在选项中使用id
不合适。 And besides, you seem to be using the same id
for multiple elements, which is semantically wrong。如果未使用val
,则选项内的文本将被视为选项的值。
<select>
<option value="val1">val1</option>
<option value="val4">val4</option>
<option value="val5">val5</option>
<!-- rest of your options -->
</select>
然后,如果您需要选择多个选定的选项,则必须使用multiple
选择。您的select
必须如下所示:< / p>
<select multiple="multiple">
<option value="val1">val1</option>
<option value="val4">val4</option>
<option value="val5">val5</option>
<!-- rest of your options -->
</select>
现在,对于您的问题,您可以split
将ajax
调用的数据val
转换为数组,然后将其传递给jQuery的//store your ajax response in a variable
var values = 'val1,val2,val3'.split(',');
//assign multiple values to <select>
$("select").val(values);
。这将为JS引擎节省大量时间来搜索id并更改选项的属性。
val
演示:http://jsfiddle.net/hungerpain/J7exP/4/
有关{{1}},see docs。
的更多信息