jQuery html元素属性名称

时间:2011-04-21 16:46:17

标签: jquery dom

我被要求帮助将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对象)动态转换为表单元素或选择对象?

3 个答案:

答案 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。

相关问题