为所选索引获取未定义

时间:2011-11-07 03:10:48

标签: jquery

我不确定是不是因为我使用jQuery来获取下拉列表或者我的假设是肯定的,这就是所选索引给我未定义的原因

var ddlMake = $('#<%=ddlMake.ClientID %>');
var makeid = ddlMake.options[ddlMake.selectedIndex].value;

所以我收到一条错误,说ddlMake.selectedIndex未定义。

但是如果我使用标准JS来引用该下拉列表,那么ddlMake.selectedIndex工作正常并且我得到一个值

var ddlMake = document.getElementById('<%=ddlMake.ClientID %>');
var makeid = ddlMake.options[ddlMake.selectedIndex].value;

如果你使用jQuery来获取DOM中的某个元素,那么你是否还需要使用jQuery方法来使用该元素,比如从中获取数据或者操纵它或者其他什么?

我猜你不能混合使用两者......就像你使用jquery获得一个ref一样,你不能再使用标准的js方法吗?只是对此感到好奇,因为如果是这样,这是一个重要的限制。并不是说我想使用标准的JS,因为我正在使用jquery,但只是好奇,因为我确实遇到了这种痛苦,并想在这里找到答案。

2 个答案:

答案 0 :(得分:2)

$(...)返回一个jQueryu对象,而不是一个DOM元素 您需要在其上使用jQuery methods

您可以编写$(...)[0]来获取jQuery对象中包含的原始DOM元素,这会破坏jQuery的目的。

使用jQuery,您可以编写类似

的内容
$('#<%=ddlMake.ClientID %> option:selected').val();

答案 1 :(得分:2)

selectedIndex是DOM元素的属性,但$('#x')返回jQuery对象。您可以使用[0]获取DOM对象:

var ddlMake = $('#<%=ddlMake.ClientID %>');
var makeid  = ddlMake[0].options[ddlMake[0].selectedIndex].value;