使用jQuery的html()方法的IE问题

时间:2010-10-18 12:18:13

标签: jquery

使用jQuery('DIVID').html()方法读取DIV元素的内容时,Internet Explorer浏览器出现问题。我将一个简单的XML字符串插入到DIV元素中。但是当我尝试使用jQuery读回内容时,一些数据丢失了。它在Firefox中运行良好。

我的代码如下所示。

<!DOCTYPE html>
<html>
<head>
  <script src="http://code.jquery.com/jquery-latest.min.js"></script>
</head>
<body>
  <p><div id="AJAXTESTDATA"></div>jQuery Simple Test.</p>
<script>
      var testAjax = document.getElementById("AJAXTESTDATA");
  var tes = '<SPAN id="tt"><DATA1><DATA2><DATA3><SPAN id="doc">TEST</SPAN></DATA3></DATA2></DATA1></SPAN>';
  alert("Actual Data:"+tes);
  testAjax.innerHTML = tes;
  var cbkData = jQuery('#AJAXTESTDATA').html();
  alert("Data after inserting to DIV:"+cbkData);
</script>
</body>
</html>

编辑: 第二条警报消息将显示DIV标记的内容,如下所示: 插入DIV后的数据:<SPAN id=test><SPAN id=doccase>TEST</SPAN></DATA3></DATA2></DATA1></SPAN> 所以你可以看到大多数开始标签都丢失了!所以无论我使用什么标签名称,IE中的结果都是一样的。

有人能让我知道在通过IE阅读时截断数据背后的原因吗?

亲切的问候, 克里希纳。

3 个答案:

答案 0 :(得分:0)

  

有人能让我知道在通过IE阅读时截断数据背后的原因吗?

HTML 4中没有c标记。我假设IE正在以比其他浏览器更严格的方式删除无效标记。

如果您要将XML作为 text 数据插入(所有标记都可见),请使用.text()代替.html()

答案 1 :(得分:0)

我同意@Pekka IE可能正在删除无效标签。您可以添加&gt;代替>&lt;代替<

答案 2 :(得分:0)

我同意Pekka:如果您使用.text()代替.html(),那么您的代码将不会被删除,但我认为您需要使用.text()来设置值而不是.innerHTML。如果您实际上并不期望显示XML数据(无论如何都不会以合理的方式显示)并且AJAXTESTDATA div实际上是隐藏的,那么这将有效。

jsFiddle示例here