jQuery如何按值选择选项?

时间:2011-05-17 13:23:45

标签: jquery select

如何选择不在'restrictedIds'中的选项,例如,选择器应选择值为24和31的选项。 我也知道如何使用'.inArray'和'.each()'来完成它,但是看看你的解决方案会很好。谢谢。

...
var restrictedIds='0,38,23';
...
<select class="text4" size="1" name="drivers">
        <option value="0"></option>
        <option value="24">test1</option>
        <option value="31">test2</option>
        <option value="38">test3</option>
        <option value="23">test4</option>
</select>

3 个答案:

答案 0 :(得分:2)

你应该看一下这些文章:
http://api.jquery.com/attribute-equals-selector/
http://api.jquery.com/attribute-not-equal-selector/
http://api.jquery.com/multiple-attribute-selector/

您可以做的只是从白名单中选择选项,即

$('option[value=24],option[value=31]')

但我不确定这是否比.each()..

更快

答案 1 :(得分:1)

您可以使用.filter。为了获得更好的性能,我建议创建一个ID地图:

var restrictedIds = {
    0: true,
    28: true,
    23: true
};

var options = $('select[name="drivers"] option').filter(function() {
    return !restrictedIds[this.value];
    //or   !(this.value in restrictedIds)
});

答案 2 :(得分:0)

最简单的方法是使用val函数http://api.jquery.com/val/。它支持读取和写入值以选择具有多个选项。

以下是一个可能适合您的示例。

<!DOCTYPE html>
<html>
<head>
  <style>
  p { color:red; margin:4px; }
  b { color:blue; }
  </style>
  <script src="http://code.jquery.com/jquery-latest.js"></script>
</head>
<body>
  <p></p>
  <select id="single">
    <option>Single</option>
    <option>Single2</option>

  </select>
  <select id="multiple" multiple="multiple">
    <option value="1">One</option>
    <option value="2">Two</option>
    <option value="3">Three</option>
    <option value="4">Four</option>
  </select>
<script>
    function displayVals() {
    $("#multiple").val([1,3]);
      var singleValues = $("#single").val();
      var multipleValues = $("#multiple").val() || [];
      $("p").html("<b>Single:</b> " + 
                  singleValues +
                  " <b>Multiple:</b> " + 
                  multipleValues.join(", "));
    }

    $("select").change(displayVals);
    displayVals();

</script>

</body>
</html>