使用jQuery查找JSON对象中列出的所有id

时间:2013-07-02 18:00:57

标签: jquery

从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>

我希望这很清楚! 非常感谢提前

2 个答案:

答案 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> 
    

现在,对于您的问题,您可以splitajax调用的数据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

的更多信息