我对如何从超文本标记语言<select>
项中获取所选选项的索引感到有点困惑。
在this页面上,描述了两种方法。但是,这两个函数总是返回-1
。下面是我的jQuery代码:
$(document).ready(function(){
$("#dropDownMenuKategorie").change(function(){
alert($("#dropDownMenuKategorie option:selected").index());
alert($("select[name='dropDownMenuKategorie'] option:selected").index());
});
});
和html格式
(...)
<select id="dropDownMenuKategorie">
<option value="gastronomie">Gastronomie</option>
<option value="finanzen">Finanzen</option>
<option value="lebensmittel">Lebensmittel</option>
<option value="gewerbe">Gewerbe</option>
<option value="shopping">Shopping</option>
<option value="bildung">Bildung</option>
</select>
(...)
为什么会出现这种行为?有没有可能select
在分配它的change()
方法时还没有“准备好”?此外,将.index()
更改为.val()
将返回正确的值,因此这是更让我困惑的地方。
发布于 2012-11-26 08:05:25
第一种方法似乎在我测试的浏览器中有效,但选项标记并不是真正对应于所有浏览器中的实际元素,因此结果可能会有所不同。
只需使用DOM元素的selectedIndex
属性:
alert($("#dropDownMenuKategorie")[0].selectedIndex);
更新:
自1.6版以来,jQuery具有可用于读取属性的prop
方法:
alert($("#dropDownMenuKategorie").prop('selectedIndex'));
发布于 2014-06-25 01:48:55
以Jquery方式解决此问题的好方法
$("#dropDownMenuKategorie option:selected").index()
发布于 2015-07-03 12:44:30
您可以使用.prop(propertyName)
函数从jQuery对象中的第一个元素获取属性。
var savedIndex = $(selectElement).prop('selectedIndex');
这使您的代码保持在jQuery领域内,并且还避免了使用选择器来查找所选选项的其他选择。然后,您可以使用重载来恢复它:
$(selectElement).prop('selectedIndex', savedIndex);
https://stackoverflow.com/questions/13556941
复制相似问题