jQuery:根据值列表为每个元素添加attr

时间:2012-09-17 08:43:19

标签: jquery

我为添加attr编写了此代码,以便在index变量上定义了值的选项元素:

$(document).ready(function (){

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

});

如何为每个在index变量上列出值的元素添加attr。像这样:

      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>

5 个答案:

答案 0 :(得分: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);
});

Working sample


没有数组

$('#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);
});

Working sample


使用filter()

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

Working sample


使用.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';
})

Working sample

答案 1 :(得分: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);
    }
});

答案 2 :(得分:1)

您无需迭代option s

$("select").each(function(){
  var index = $(this).val();
  if($.inArray([1,2,5,8,7,9], index) > -1)
     $(this).prop("selectedIndex", index);  //set selected index
  }
}

答案 3 :(得分:1)

使用select,您可以使用jQuery更简单。

你可以这样做:

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

Check the demo.

答案 4 :(得分:1)

如果您只想使用index作为逗号分隔字符串的当前设置快速解决方案,请尝试以下操作:

$(this).prop('selected', 
  (new RegExp('('+index.split(',').join('|')+')'))
    .test(this.value)
);