我有一个选择框:

<select id="selectBox">
  <option value="0">Number 0</option>
  <option value="1">Number 1</option>
  <option value="2">Number 2</option>
  <option value="3">Number 3</option>
  <option value="4">Number 4</option>
  <option value="5">Number 5</option>
  <option value="6">Number 6</option>
  <option value="7">Number 7</option>
</select>

我想将其中一个选项设置为“选定”基于它的选定索引。

例如,如果我试图设置“数字3”,我尝试这样做:

$('#selectBox')[3].attr('selected', 'selected');

但这行不通。我如何设置一个选项,因为选择基于它的索引使用jQuery?

谢谢!


当前回答

重要的是,理解一个select元素的val()返回所选选项的值,而不是像javascript中的selectedIndex那样返回元素的数量。

要选择值为"7"的选项,你可以简单地使用:

$('#selectBox').val(7); //this will select the option with value 7.

要取消选择该选项,请使用空数组:

$('#selectBox').val([]); //this is the best way to deselect the options

当然,您可以选择多个选项*:

$('#selectBox').val([1,4,7]); //will select options with values 1,4 and 7

*但是要选择多个选项,<select>元素必须有multiple属性,否则它将不起作用。

其他回答

为了澄清Marc和John Kugelman的回答,你可以使用:

$('#selectBox option').eq(3).attr('selected', 'selected')

如果以指定的方式使用get()将无法工作,因为它获取的是DOM对象,而不是jQuery对象,因此下面的解决方案将无法工作:

$('#selectBox option').get(3).attr('selected', 'selected')

eq()将jQuery集过滤为具有指定索引的元素的jQuery集。它比$($('#selectBox option').get(3))更清晰。它不是那么有效。$($('#selectBox选项')[3])更有效(参见测试用例)。

但实际上并不需要jQuery对象。这样就可以了:

$('#selectBox option')[3].selected = true;

http://api.jquery.com/get/

http://api.jquery.com/eq/

还有一点非常重要:

属性“selected”不是你指定选中单选按钮的方式(至少在Firefox和Chrome中是这样)。使用"checked"属性:

$('#selectBox option')[3].checked = true;

复选框也是如此。

在1.4.4中,你会得到一个错误:$("#selectBox option")[3]。Attr不是一个函数

$('#名称选项:eq(idx)')。attr(‘选择’,真正的);

其中#name是select id, idx是你想要选择的选项值。

:不久

$ (" # selectBox”)。attr(“selectedIndex index)

其中index是所选的整数索引。

# Set element with index
$("#select option:eq(2)").attr("selected", "selected");

# Set element by text
$("#select").val("option Text").attr("selected", "selected");

当你想用顶部方式选择集合选择时,你可以使用 $(" #选择选项”).removeAttr(“选择”);用于删除先前的选择。

# Set element by value
$("#select").val("2");

# Get selected text
$("#select").children("option:selected").text();  # use attr() for get attributes
$("#select option:selected").text(); # use attr() for get attributes 

# Get selected value
$("#select option:selected").val();
$("#select").children("option:selected").val();
$("#select option:selected").prevAll().size();
$("option:selected",this).val();

# Get selected index
$("#select option:selected").index();
$("#select option").index($("#select option:selected"));

# Select First Option
$("#select option:first");

# Select Last Item
$("#select option:last").remove();


# Replace item with new one
$("#select option:eq(1)").replaceWith("<option value='2'>new option</option>");

# Remove an item
$("#select option:eq(0)").remove();

如果你的选择框是一个multipl,你也可以初始化多个值:

$('#selectBox').val(['A', 'B', 'C']);