在jQuery中获取元素的内容而不转义

时间:2013-05-09 03:55:45

标签: javascript jquery dom

我希望获得元素的内容而不用进行任何更改。当我使用.html()时,它会不必要地转义字符,例如&&

在我的代码中,Content是来自服务器的数据。问题是原始数据已被转义。我也不想使用unescaping过程。这意味着2次更改原始数据。

任何想法都会非常感激。

以下是代码:

<html>
<head>
  <style>
  p { color:blue; margin:8px; }
  b { color:red; }
  </style>
  <script src="http://code.jquery.com/jquery-1.9.1.js"></script>
</head>
<body>
  <p><b>Hey, Give me originial HTML contents</b>, "& < >" without any escapes. pls</p>
  <p></p>
<script>
var str = $("p:first").html();
$("p:last").text(str);
</script>
</body>
</html>

编辑: 如上所述,我需要数据而不做任何更改。 HTML标签也是。我知道.text()的作用。

EDIT2: str 必须完全正确。 <b>Hey, Give me originial HTML contents</b>, "& < >" without any escapes. pls。请理解无法正确显示的问题。变量 str 必须包含正确的(原始)数据。

3 个答案:

答案 0 :(得分:3)

您应该使用相同的组合: -

var str = $("p:first").html();
$("p:last").html(str);

var str = $("p:first").text();
$("p:last").text(str);

或者,如果您想要按原样显示标签,则必须转义“&lt;”,“&gt;” ,“&amp;”等

var  str = $('p:first').html();
str = str.replace(/>/g,"&gt;").replace(/</g, "&lt;");
$("p:last").html(str);

答案 1 :(得分:0)

更改

$("p:last").text(str);

$("p:last").html(str);

<强> jsFiddle

答案 2 :(得分:0)

下面的代码可以很好地将innerhtml复制到另一个元素中。 Jquery Fiddle

var str = $("p:first").innerHtml();
$("p:last").text(str);