Javascript 使用jQuery选择元素时,如何获取元素的常规属性?

Javascript 使用jQuery选择元素时,如何获取元素的常规属性?,javascript,jquery,attributes,Javascript,Jquery,Attributes,我有一个使用jQuery选择的文本区域,我想找到光标在其中的位置。我发现在普通JavaScript中,您可以使用.selectionStart,但使用$(“#maintext”).selectionStart会导致未定义 如何操作?selectionStart是本机DOM属性,请尝试以下操作: var selStart = $('#maintext').get(0).selectionStart; 发生这种情况的原因是$('#maintext')返回一个jQuery包装的DOM对象数组,为了调

我有一个使用jQuery选择的文本区域,我想找到光标在其中的位置。我发现在普通JavaScript中,您可以使用
.selectionStart
,但使用
$(“#maintext”).selectionStart
会导致
未定义


如何操作?

selectionStart
是本机DOM属性,请尝试以下操作:

var selStart = $('#maintext').get(0).selectionStart;

发生这种情况的原因是
$('#maintext')
返回一个jQuery包装的DOM对象数组,为了调用本机方法,您需要获取底层元素。

在这种情况下,可能需要简单地执行以下操作:

document.getElementById("maintext").selectionStart

并且没有创建新jQuery对象的开销。

在jQuery 1.6中,可以使用
prop()
。在旧版本中,可以使用
attr()

$("#maintext").prop("selectionStart");

但是,IE<9中不支持
selectionStart
selectionEnd
属性。我已经发布了一个跨浏览器函数来解决堆栈溢出问题(例如,),或者您可以使用my来处理文本区域/文本输入选择。

我宁愿使用
.get(0)
,因为它更干净,并且提供负索引支持。哦,好的。[0]代表什么?第一个选择的元素?可能值得补充的是,返回
undefined
的原因是jQuery选择器没有指定特定的DOM元素。因此,大概是,
$('maintext:first')也会起作用@Gabriele,
[0]
指定选择器返回的数组的第一个元素。@Gabriele Cirulli,是的,但是因为您使用的是id选择器,所以应该总是只有一个。
selectionStart
selectionEnd
属性在IE<9中不受支持。@Bing:这并没有解决他的问题,因为他想将它与jQuery对象结合起来。@pimvdb,当然,但也有提到jQuery。我想这是一个很好的问题参考。谢谢,但是为了简单起见,我想保留所有基于jQuery的语法,同时也因为速度不是主要考虑的问题。Gabriele-如果你的目标是简单(也许你的意思是可维护性),那么最好明确DOM方法的使用区域。在一个表达式中混合jQuery和DOM方法与此相反。jQuery采用的对象包装方法的问题在于,它需要为每个DOM方法提供一个等价的函数,并为每个DOM属性提供getter和setter。作者似乎选择只复制一些方法和属性。