Textarea:elem.val()vs elem.text()

这很奇怪。 显然,我可以使用.val()和.text()来操作textarea文本。

但是在我使用.val来改变文本之后,我再也不能使用.text了。 相反的情况并非如此。

这导致一些时髦的错误。 原因是因为我使用的插件可能正在使用.val来操作文本。

谁能解释一下这是如何工作的? 谢谢!

您必须使用val()或(更好)textarea的value属性。 text()最初起作用,因为textarea的初始值由它包含的文本节点(如果有)确定。 您甚至可以最初更改此文本节点的nodeValuedata属性,它将更新textarea的值。 但是,只要用户更改了textarea的值或脚本更改了textarea的value属性,文本节点就会超出图片范围,并且不再以任何方式绑定到textarea的值。

.val()函数获取元素的“value”属性,而.text()获取元素中文本节点(节点类型3)的内容。 我会说,如果设置.text()起作用,那不是一个好主意,因为它基本上是用基本的物质构建块来愚弄。 它可能导致错误,浏览器崩溃或毁灭性爆炸。

使用.val()

edit.text()可以处理用户与元素交互的点,或者JavaScript代码设置“value”属性。 在那之后,元素的DOM内容变得无关紧要。 你仍然可以得到它,但它不会反映元素的实际状态。

听起来很奇怪,但是在较低的层次上,.val()是我期待的工作,因为.value是访问表单元素内容的方式。 为什么.text()在某些情况下有效

必须使用Node .text()类型检索…

.Text()获取所有匹配元素的innerText(不是HTML),而.val()从输入元素中检索值…