.text()和.html()之间的差异与转义的<和>字符

Ric*_*ett 14 jquery

给出以下HTML片段:

<p id="para">hello &lt;world&gt;</p>
Run Code Online (Sandbox Code Playgroud)

jQuery .text().html()方法将返回不同的值...

var text = $('#para').text(); // gives 'hello <world>'
var html = $('#para').html(); // gives 'hello &lt;world&gt;'
Run Code Online (Sandbox Code Playgroud)

jQuery文档说明

.text()方法的结果是一个包含所有匹配元素的组合文本的字符串.

和...

在HTML文档中,我们可以.html()用来获取任何元素的内容.如果选择器表达式与多个元素匹配,则仅返回第一个HTML内容.

但与此特定的差异&lt;&gt;似乎并没有被记录任何地方.

任何人都可以评论这种差异的理由吗?

编辑

多一点调查表明,价值观.text().html()匹配那些从本地JavaScript innerTextinnerHTML分别调用(当jQuery选择返回一个单一的元素,至少).同样,这并没有反映在jQuery文档中,所以我不能100%确定这种观察是否适用于所有场景.阅读jQuery源代码可以发现,这并不是真正发生的事情.

Fré*_*idi 7

我认为这样可以使得往返可以正常工作.您应该能够通过在html()的结果上调用$()来获得原始内容的完美克隆:

var clonedContent = $($("#para").html());
Run Code Online (Sandbox Code Playgroud)

如果HTML实体未被转义html(),则上述内容将创建<world>原始内容中不存在的元素.


dhe*_*aur 7

这是按照相应的JavaScript方法textContentinnerHTML.

>> console.log(document.getElementsByTagName('p')[0].textContent);
hello <world>

>> console.log(document.getElementsByTagName('p')[0].innerHTML);
hello &lt;world&gt;
Run Code Online (Sandbox Code Playgroud)

  • @Richard,但是,我对DOM的创造者对这个决定的含义非常感兴趣.我搜索了很多文档,但没有找到它背后的基本原理.我找到的东西会更新. (4认同)