何时在元素上使用jQuery .html或.text

mar*_*rky 8 performance jquery

在我发布的这个问题(并得到回答)中,我发现了如何正确地将文本框的值分配给标签的值.答案是使用其中之一

$('#txtBranchName').val($('#lblBranchName').html());
Run Code Online (Sandbox Code Playgroud)

要么

$('#txtBranchName').val($('#lblBranchName').text());
Run Code Online (Sandbox Code Playgroud)

一个比另一个好吗?是否有性能差异,或者一种方法不起作用,但另一种方法会在特定情况下发生吗?

Rob*_*nik 21

设置数据

.text("<b>Test</b>")将转义任何HTML标签(渲染<b>Test</b>)

.html("<b>Test</b>")将它们渲染为实际的HTML元素(渲染测试).

读数据

.text() 将仅返回文本节点(剥离标签)

.html() 将返回包含标签的实际HTML字符串.


这是一个JSFiddle,它显示了两种方式的不同.


Nie*_*sol 5

如果没有标签的HTML子元素,那么它们都是相同的,但是如果有任何一个(例如红色的"必需"标记),那么最好使用它,.text()这样你就可以得到那个标记而不是生成它的HTML .


Nir*_*ngh 5

请参阅:jQuery:text()和html()之间有什么区别?的.text()和.html()用转义<和>字符之间的差异

实际上两者看起来有点类似,但是完全不同,这取决于你的用途或意图你想要实现的目标,

在哪里使用:

  • 使用.html()来操作具有html元素的容器.
  • 使用.text()来修改通常具有单独的打开和关闭标记的元素的文本

jQuery.html()将字符串视为HTML,jQuery.text()将内容视为文本.

与.html()方法不同,.text()可以在XML和HTML文档中使用..text()方法的结果是一个包含所有匹配元素的组合文本的字符串.(由于不同浏览器中HTML解析器的变化,返回的文本可能会在换行符和其他空格中有所不同.)