$ .append()和$ .append(document.createTextNode())之间的区别

时间:2014-10-12 22:09:49

标签: jquery html string append

使用以下html

<div id="duo">batman</div>

以下两条jQuery线之间的区别是什么?

$('#duo').append(' and robin');

$('#duo').append(document.createTextNode(' and robin'));

他们都生产

<div id="duo">batman and robin</div>

第一个html和第二个只是一个字符串吗?有关系吗?这有什么影响,差异意味着什么?


修改

如果引号内的文字是' and <em>robin</em>'怎么办?似乎前一个语句产生强调文本,而后者实际上在页面上呈现可见<em>标记。

2 个答案:

答案 0 :(得分:1)

没有区别。在第一种情况下,jQuery只是为你处理额外的工作。

答案 1 :(得分:1)

结果是一样的,唯一的区别是jQuery在第一行创建了文本节点。

如果使用DOM方法查看结果(因为jQuery使用元素而不是节点),您会看到创建的文本节点:

$('#duo').append(' and robin');
$('#duo').append(document.createTextNode(' and robin'));

var c = document.getElementById('duo').childNodes;
for (var i = 0; i < c.length; i++) {
    console.log(c[i]);
}

输出:

<TextNode textContent="batman">
<TextNode textContent=" and robin">
<TextNode textContent=" and robin">

小提琴:http://jsfiddle.net/Guffa/tgqz37m5/