jquery选择输入选项,除了一个

时间:2011-05-02 18:48:07

标签: jquery jquery-selectors

我有一个多选项,其中包含许多来自访问者的来源。我还在所有选项的顶部包含一个选项(值为“all”)。

当有人点击该选项时,将选择所有选项。那部分很容易。我已经包含了侦听点击事件的多选和jquery。

<select name="sourceid[]" id="sourceid" style="width:230px;" multiple="multiple">
  <option value="all">-- Select All Sources --</option>
  <option value="1">Internet</option>
  <option value="2">Radio</option>
  <option value="3">Phone</option>
  <option value="4">Other</option>
</select>


$("#sourceid").click(function(){

  if($(this).val()=='all'){ $("#sourceid option").attr("selected","selected"); }

});

到目前为止,效果很好! jquery也会自然地选择顶部选项。

有没有办法让jquery排除选择那个选项?

7 个答案:

答案 0 :(得分:9)

使用此选择器

$("option[value!=all]")

属性值不是allexample on jsFiddle

的所有选项

Attribute not equal selector jQuery API

答案 1 :(得分:3)

使用jQuery的not()选择器

尝试此操作
$("#sourceid").click(function(){

  if($(this).val()=='all'){ 
            $("#sourceid option").not(this)
                   .attr("selected","selected"); 
  }

});

答案 2 :(得分:2)

怎么样

$("#sourceid option").not(':first').attr("selected","selected");

答案 3 :(得分:0)

如果我理解你正在尝试做什么,我会使用复选框列表,然后选择所有选中所有框而不是使用下拉列表...

答案 4 :(得分:0)

避免问题;只需将disabled添加到顶部选项即可。无论如何,你不希望他们能够提交该选项。

<select name="sourceid[]" id="sourceid" style="width:230px;" multiple="multiple">
  <option value="all" disabled>-- Select All Sources --</option>
  <option value="1">Internet</option>
  <option value="2">Radio</option>
  <option value="3">Phone</option>
  <option value="4">Other</option>
</select>

答案 5 :(得分:0)

你可以像这样使用not选择器:

 $("#sourceid :not(option[value='all'])").attr("selected", "selected");

答案 6 :(得分:0)

$("#sourceid option[value=all]").click(function(){
    $(this).siblings().attr("selected","selected");
});

也许更好:

$("#sourceid option[value=all]").click(function(){
if($(this).siblings("[selected=selected]").size() == $(this).siblings().size()) {
    $(this).siblings().removeAttr("selected");
} else {
    $(this).siblings().attr("selected","selected");
}
});