这有点没有实际意义,但我仍然很好奇为什么以下两行不等价。
$("#boink").selectionStart = 3;
document.getElementById("boink").selectionStart = 3;
工作示例来自这个问题。出于某种原因,jQuery 获取的控件没有selectionStart和selectionEnd属性。
如果我仍然要应用 jQuery 选择器,应该使用什么来代替?
那是因为$("#boink")
它是一个 jQuery 对象,而不是 DOM 元素本身。为了使这两行等效,您应该这样做
$("#boink")[0].selectionStart = 3;
该数组包含所有匹配的 DOM 元素。由于您是按 id 选择的,因此一个元素可以匹配最多,因此您只需使用选择第一个元素[0]
您始终可以使用获取原始 DOM 元素
$("#boink")[0].selectionStart = 3;
$("#boink")
将返回 jQuery 对象而不是控件本身。要获得控制,您必须使用.get
方法或使用[]
符号来获取元素:
$("#boink")[0].selectionStart = 3;
$("#boink").get(0).selectionStart = 3;