0

ajax リクエストから、このレスポンスを取得します

val1,val2,val3

そして、それらと同等の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>

これが明確であることを願っています!よろしくお願いします

4

2 に答える 2

4

filter()を使用してみてください。複数選択を許可するには、select の multiple 属性を設定する必要もあります。

ライブデモ

var arr = 'val1,val2,val3'.split(',');
$('select option').filter(function(){
    return arr.indexOf(this.id) != -1;
}).prop('selected', true);

Select の複数の属性

このブール属性は、リストで複数のオプションを選択できることを示します。指定されていない場合は、一度に 1 つのオプションのみを選択できます ( Reference ) 。

jQueryフィルター()

一連の DOM 要素を表す jQuery オブジェクトを指定すると、.filter() メソッドは、一致する要素のサブセットから新しい jQuery オブジェクトを構築します。提供されたセレクターは、各要素に対してテストされます。セレクターに一致するすべての要素が結果に含まれます。

于 2013-07-02T18:04:33.343 に答える
1

次の 2 つのことを行う必要があります。

  • のすべてのid属性を に変更しoptionますvalueidオプションで使用するのは適切ではありません。さらに、複数の要素に同じものを使用しているようですがid、これは意味的に間違っています。を使用しない場合val、オプション内のテキストがオプションの値として使用されます。

    <select>
      <option value="val1">val1</option>
      <option value="val4">val4</option>      
      <option value="val5">val5</option>
      <!-- rest of your options -->
    </select> 
    
  • 次に、選択したオプションを複数選択する必要がある場合は、selectを使用する必要があります。multiple次のselectようにする必要があります。

    <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配列に入れ、それを jQuery の に渡すことができvalます。これにより、JS エンジンが ID を検索してオプションの属性を変更する時間を大幅に節約できます。

//store your ajax response in a variable
var values = 'val1,val2,val3'.split(',');
//assign multiple values to <select>
$("select").val(values);

デモ: http://jsfiddle.net/hungerpain/J7exP/4/

の詳細についてはvalドキュメントを参照してください。

于 2013-07-02T18:20:12.707 に答える