我有一个选择框:

<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?

谢谢!


当前回答

:不久

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

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

其他回答

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

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

注意:答案依赖于jQuery 1.6.1+

$('#selectBox :nth-child(4)').prop('selected', true); // To select via index
$('#selectBox option:eq(3)').prop('selected', true);  // To select via value

感谢您的评论,.get将无法工作,因为它返回一个DOM元素,而不是jQuery元素。请记住,如果您愿意,.eq函数也可以在选择器之外使用。

$('#selectBox option').eq(3).prop('selected', true);

如果你想使用值,而不是依赖于选择特定的索引,你也可以更简洁/可读:

$("#selectBox").val("3");

注意:.val(3)对于这个例子也很有效,但是非数字值必须是字符串,所以为了保持一致性,我选择了字符串。 (例如:<option value="hello">Number3</option>要求你使用.val("hello"))

试试这个:

$('select#mySelect').prop('selectedIndex', optionIndex);

最后,触发一个.change事件:

$('select#mySelect').prop('selectedIndex', optionIndex).change();

我也遇到过同样的问题。 首先你需要遍历事件(即哪个事件先发生)。

例如:

第一个事件是生成带有选项的选择框。

第二个事件是使用val()等函数选择默认选项。

您应该确保第二个事件应该发生在第一个事件之后。

为了实现这个目标,需要用到两个函数,比如generateSelectbox()(用于生成选择框)和selectDefaultOption()

您需要确保只有在generateSelectbox()执行之后才调用selectDefaultOption()

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

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

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