我有一些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不起作用?
答案 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元素。