给出以下HTML片段:
<p id="para">hello <world></p>
Run Code Online (Sandbox Code Playgroud)
jQuery .text()和.html()方法将返回不同的值...
var text = $('#para').text(); // gives 'hello <world>'
var html = $('#para').html(); // gives 'hello <world>'
Run Code Online (Sandbox Code Playgroud)
jQuery文档说明
该
.text()方法的结果是一个包含所有匹配元素的组合文本的字符串.
和...
在HTML文档中,我们可以
.html()用来获取任何元素的内容.如果选择器表达式与多个元素匹配,则仅返回第一个HTML内容.
但与此特定的差异<和>似乎并没有被记录任何地方.
任何人都可以评论这种差异的理由吗?
多一点调查表明,价值观.text()和.html()匹配那些从本地JavaScript innerText并innerHTML分别调用(当jQuery选择返回一个单一的元素,至少).同样,这并没有反映在jQuery文档中,所以我不能100%确定这种观察是否适用于所有场景.阅读jQuery源代码可以发现,这并不是真正发生的事情.
我认为这样可以使得往返可以正常工作.您应该能够通过在html()的结果上调用$()来获得原始内容的完美克隆:
var clonedContent = $($("#para").html());
Run Code Online (Sandbox Code Playgroud)
如果HTML实体未被转义html(),则上述内容将创建<world>原始内容中不存在的元素.
这是按照相应的JavaScript方法textContent和innerHTML.
>> console.log(document.getElementsByTagName('p')[0].textContent);
hello <world>
>> console.log(document.getElementsByTagName('p')[0].innerHTML);
hello <world>
Run Code Online (Sandbox Code Playgroud)