1

変数attrに値を定義したオプション要素に追加するために、次のコードを書きました。index

$(document).ready(function (){

    $('option').each(function() {
      var index = '1';
      if($(this).attr('value') == index)
        $(this).attr('selected','selected');
    });

});

index変数に値がリストされている各要素に属性を追加するにはどうすればよいですか。このようなもの:

      var index = '1,2,5,8,7,9';
      if($(this).attr('value') == index)
...

更新:これは私のhtmlコードです:

<select name="category[]" multiple="multiple" id="category">
    <option class="level-0" value="1">Jobs</option>
    <option class="level-1" value="24">CSS</option>
    <option class="level-0" value="5">Products</option>
</select>
4

5 に答える 5

4
$('#category option').each(function() {
  var index = [1,2,5,8,7,9],
      value = parseInt( this.value, 10); // convert the value to integer
  if($.inArray(value, index) >= 0)
    $(this).attr('selected','selected'); //or, $(this).prop('selected', true);
});

作業サンプル


アレイなし

$('#category option').each(function() {
  var index = '1,2,5,8,7,9',
      value = this.value;
  if(index.indexOf(value) >= 0)
    $(this).attr('selected','selected'); //or, $(this).prop('selected', true);
});

作業サンプル


使用するfilter()

var index = '1,2,5,8,7,9';
$('#category option').filter(function() {
  return index.indexOf(this.value) >= 0;
}).attr('selected', 'selected');

作業サンプル


使用する.attr('selected', callback)

var index = '1,2,5,8,7,9';
$('#category option').attr('selected', function(i, val) {
  if( index.indexOf( this.value) >= 0 )
  return 'selected';
})

作業サンプル

于 2012-09-17T08:48:13.457 に答える
2

値を配列に結合してから、ネイティブの js 配列indexOfメソッドを使用します。

var index = [1,2,5,8,7,9];
if( index.indexOf( $(this).val() ) > -1) {
    //...
}


複数の要素に対してこれを行うには、次を使用します.each()

var index = [1,2,5,8,7,9];
$("#category option").each( function() {
    if( index.indexOf( $(this).val() ) > -1) {
        $(this).prop('selected', true);
    }
});
于 2012-09-17T08:45:15.953 に答える
1

optionsを繰り返す必要はありません

$("select").each(function(){
  var index = $(this).val();
  if($.inArray([1,2,5,8,7,9], index) > -1)
     $(this).prop("selectedIndex", index);  //set selected index
  }
}
于 2012-09-17T08:47:17.923 に答える
1

では、selectjQuery を使用してはるかに簡単に行うことができます。

あなたはただ行うことができます:

$("#select-id").val(value);  
// eg: $("#select-id").val('5'); will make the option whose value is 5 to be selected.

デモを確認してください。

于 2012-09-17T08:47:52.723 に答える
1

indexコンマ区切りの文字列を使用した現在のセットアップで簡単な解決策が必要な場合は、次を試してください。

$(this).prop('selected', 
  (new RegExp('('+index.split(',').join('|')+')'))
    .test(this.value)
);
于 2012-09-17T08:58:04.643 に答える