如何使用jQuery设置.selectedIndex

时间:2016-04-26 21:31:51

标签: javascript jquery html-select

我有一些HTML选择:

<select class="form-control, dropdown" id="delperffrom" name="delperffrom">
. . .
<select class="form-control, dropdown" id="delperfto" name="delperfto">
. . .

我想把它们初始化为“没有价值”,所以有这个javascript,它有效:

document.getElementById("delperffrom").selectedIndex = -1;

..和这个jQuery,它没有:

$("#delperfto").selectedIndex = -1;

为什么jQuery不起作用?

2 个答案:

答案 0 :(得分:6)

.selectedindex DOM 元素的属性,而不是 jQuery 。您可以在 DOM 元素上更改它,或使用 jQuery .prop() 方法:

$("#delperffrom")[0].selectedIndex = -1; // change on dom element pulled from jQuery
$("#delperffrom").prop('selectedIndex',-1); // change with .prop() jquery method

答案 1 :(得分:4)

因为$("#delperfto")不是DOM元素。它是一个jQuery对象,而jQuery对象没有.selectedIndex属性。 jQuery对象是它自己的对象类型,具有自己的属性和方法。它没有与DOM元素相同的属性和方法。它通常有一种方法可以完成同样的事情,但通常使用不同的语法。

您可以从jQuery对象中获取DOM元素并直接访问该DOM元素,如下所示:

$("#delperfto")[0].selectedIndex = -1;

$("#delperfto").get(0).selectedIndex = -1;

或者,你可以使用jQuery的.prop()方法让它为你设置每个DOM元素的所需属性:

$("#delperfto").prop("selectedIndex", -1);

在这种特定情况下,其中一个或那个没有特别的优势,但是如果你的选择器返回了多个元素,例如:

$(".options").prop("selectedIndex", -1);

然后jQuery .prop()方法会在选择器匹配的所有DOM元素上设置该属性,而不仅仅是第一个有时非常有用的DOM元素。