jQuery.html()方法IE6/8下设置html代码失效的问题

在设置一个空表格的时候,遇到jQuery.html()方法IE6/8下设置html代码失效的问题。

问题简要描述如下:

html表格源码:

<table width=”90%” border=”0″ id=”respurposediv”></table>

jquery版本1.3.2,代码如下:

$(“#respurposediv”).html(“chenpeng.info”);

以上jquery代码在firefox和IE9能成功执行,但是在IE6、IE8无效。

检查了很久没有查出来,最后把IE下的$(“#respurposediv”).html();和firefox下的$(“#respurposediv”).html();结果比较,发现IE8默认结果为<tbody></tbody>,20120819232897.png

firefox默认为空,

20120819232519.png

于是怀疑和<table></table>标签中的tbody结构缺失有关,将<tbody></tbody>补充到ajax返回的结果中后,在IE6、IE8下也能正常使用了,问题解决。

附网络资料:http://www.cnblogs.com/stone_w/archive/2011/09/08/2171168.html

  jQuery一般来说还是很好用的,但有时候它也会有些问题的,比如jQuery的html()方法设置html代码,在一种情况下,ie6、ie7、ie8 下是不能设置html代码的。本文说的问题只针对ie8(包括ie8)以下的浏览器。

  1.什么情况下IE6、IE7、IE8 jQuery.html(“xxx”)方法会设置不上html代码?

  答:当被加载的的html代码里面出现以下情况,ie8(包括ie8)以下是设置不上html代码的:

    a) 被设置的html代码中包含引用其他js的,如:<script src=”Stone.js” type=”text/javascript”></script> 这种情况下,设置html代码无效。

    b) 被设置的html代码中包含js 方法的,如:function Stone(){ alert(“我叫MT”); },设置html代码无效。

    c) 被设置的html代码中有css 样式的,如:.Stone ul li{ list-style:none;float:left; }等,设置的html代码无效。[附加:被设置的html代码中如果包含引用其他外部

      样式的,比如:<link href=”../Css/style.css” rel=”stylesheet” type=”text/css” />,虽然不会影响html设置,但是被引用的css是无效的,是没有样式的。]

  2.原因分析:

  答:被设置的html,jQuery只是单纯的解析为html,不会去理会其他的因素和代码,所有导致上述问题的出现。

  3.解决方案:

  答:去掉被设置的js引用css引用和代码即可解决。

About 智足者富

http://chenpeng.info

发表评论

电子邮件地址不会被公开。 必填项已用*标注

您可以使用这些HTML标签和属性:

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>