1

这有点没有实际意义,但我仍然很好奇为什么以下两行不等价。

$("#boink").selectionStart = 3;
document.getElementById("boink").selectionStart = 3;

工作示例来自这个问题。出于某种原因,jQuery 获取的控件没有selectionStartselectionEnd属性。

如果我仍然要应用 jQuery 选择器,应该使用什么来代替?

4

3 回答 3

4

那是因为$("#boink")它是一个 jQuery 对象,而不是 DOM 元素本身。为了使这两行等效,您应该这样做

$("#boink")[0].selectionStart = 3;

该数组包含所有匹配的 DOM 元素。由于您是按 id 选择的,因此一个元素可以匹配最多,因此您只需使用选择第一个元素[0]

于 2013-07-10T12:18:53.810 回答
2

您始终可以使用获取原始 DOM 元素

$("#boink")[0].selectionStart = 3;
于 2013-07-10T12:19:17.097 回答
2

$("#boink")将返回 jQuery 对象而不是控件本身。要获得控制,您必须使用.get方法或使用[]符号来获取元素:

$("#boink")[0].selectionStart = 3;
$("#boink").get(0).selectionStart = 3;
于 2013-07-10T12:19:20.733 回答