我被要求帮助将onChange
添加到选择中,所以我想出了这个:
$("select[name=component]").change(function() {
$("input[name=Code]").val(JSONObject[$(this).selectedIndex].code;
$("input[name=Category]").val(JSONObject[$(this).selectedIndex].category;
$("input[name=UOM]").val(JSONObject[$(this).selectedIndex].uom;
});
提问者告诉我,直到他将 $(this)
更改为 this
这只对我有意义,如果jQuery没有使用我认为是jQuery对象的名称selectedIndex。
如果没有,我只需要使用.attr("selectedIndex")
吗?
jQuery是否将对象从$(this)
(jQuery对象)动态转换为表单元素或选择对象?
答案 0 :(得分:5)
jQuery对象实际上并不是DOM元素的扩展:DOM元素成为jQuery对象的子元素。
它位于jQuery对象的0
成员中,因此如果由于某种原因需要使用jQuery对象(在此示例的上下文中@nickf是疯狂的 - 您只需使用{{ 1}}代替),必须使用
this.selectedIndex
访问原始属性。
答案 1 :(得分:3)
在所有事件处理程序中,this
是DOM元素本身,不是jQuery对象。
这里没有魔法 - $(this)
只是创建一个围绕元素(<select>
)的jQuery对象。 jQuery没有.selectedIndex
属性,但DOM元素有,所以不需要调用$(this)
答案 2 :(得分:2)
$(this)将确实将给定对象包装在JQuery对象中 - 并且由于selectedIndex不是html元素的属性,因此您将失去对该属性的访问权限。因此,访问该属性的正确方法实际上是不将它包装在jquery对象中 - 所以this.selectedIndex。