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