1

我编写了这段代码以添加attr到已在index变量上定义值的选项元素:

$(document).ready(function (){

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

});

如何将 attr 添加到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 回答