JQuery .html()函数返回源代码中找不到的标签

时间:2014-06-01 13:53:51

标签: jquery

一个非常奇怪的问题:

HTML:

<div id="data" class="hidden">{"items":[{"name"... "Click on: "}]}</div>

JQuery的:

var json_data = $("#data").html();

人们希望json_data包含#data div的内容,但出于某种原因,它包含:

{"items":[{"name"... "Click on: "}]}</p></h3>

请注意&#34; </p></h3>&#34;在末尾。我在页面源中检查过,&#34; </p></h3>&#34;无处可寻,页面上只有一个id为#data的div。

<div id="data">的内容是来自PHP的json_encode($data);的直接输出。

1 个答案:

答案 0 :(得分:2)

html方法返回从DOM中的元素创建的HTML代码,而不是原始源代码。

有时会在DOM中添加额外的元素,即使它们未在源代码中指定,例如tbody元素中的table元素。

在您的情况下,可能的原因是您在JSON字符串中的某处有<p><h3>,然后浏览器必须在解析源代码时将这些未终止的标记转换为元素。

要在页面中放置一个任意字符串,并且不将其中的HTML代码解析为元素,您可以对字符串进行HTML编码。