2011-11-07 72 views
1

我不知道这是否是因为我用jQuery来获得裁判的下拉或什么,但我的假设是肯定这就是为什么选择指数是给我不确定入门未定义选择指数

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

所以我得到一个错误,说ddlMake.selectedIndex是未定义的。

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

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

所以是的,如果你使用jQuery得到裁判的一些元素DOM,你是否还需要进一步使用jQuery方法来使用该元素,例如从中获取数据或操作它或其他?

我想你不能混合使用这两个..就像你通过使用jQuery获得裁判,你不能然后使用标准的JS方法来对付它?只是对此感到好奇,因为如果是这样的话它是一个重要的限制。并不是说我想使用标准JS,因为我使用的是jquery,但只是好奇,因为我确实遇到过这种痛苦,并且想要在这里找出答案。

+0

对不起,我很乐意接受两种答案,但我选择谁与rreason第一次来到了,那就是亩。 – PositiveGuy

回答

2

selectedIndex是DOM元素的属性,但$('#x')返回一个jQuery对象。您可以使用[0]虽然得到DOM对象:

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

嗯相反有趣的是我注意到,如果你这样做:var ddlPaintType = document.getElementById('<%= ddlPaintType.ClientID%>');你可以在原始DOM元素上使用jQuery方法? – PositiveGuy

+0

@CoffeeAddict:不,你不能在原始DOM对象上使用jQuery方法。你在做什么'ddlPaintType'? –

2

$(...)返回一个jQueryu对象,而不是DOM元素。
你需要使用jQuery methods就可以了。

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

使用jQuery,你可以写类似

$('#<%=ddlMake.ClientID %> option:selected').val(); 
+0

谢谢,并得到下拉的文本值我假设文本(); – PositiveGuy