我有一个页面使用由pagedload上的.NET转发器生成的一堆表。这些表可以包含两个类中的一个:fileExists
或fileDoesNotExist
。在document.ready
,我有以下内容:
$document.ready(function () {
$('.fileDoesNotExist').each(function () {
$(this).html("<h3>FILE #" + $(this).attr('id').replace('T', '') + ":</h3><p><a href=\"/cp/media-upload.aspx?seq=" + $(this).attr('id').replace('T', '') + "\">click here to upload an MP3 or video</a></p>");
$(this).css('border', 'none');
});
});
哪个应该影响这一点HTML(涉及更多元素,但这是基本要点):
<table class="fileDoesNotExist" style="width: 100%;margin-top: 1em;" id="T1">
<tr>
<th colspan="3">FILE 1</th>
</tr>
<tr>
<td>Media Title:</td>
<td colspan="2">
<input name="txtTitle" type="text" maxlength="255" size="50" id="txtTitle" />
</td>
</tr>
</table>
这段代码在Chrome,Firefox,IE8和IE9中运行良好。当试图在IE7中查看页面时,它什么都没做。我可以在IE9中使用IE7标准在文档模式下复制它,并且当尝试直接在控制台中运行脚本时,它完全没有任何操作并且不会返回任何有用的错误消息。
.each
肯定是正确触发的(我用$(this).html
替换了alert($(this).attr('id'));
,并用fileDoesNotExist
类吐出了表的ID,但似乎是html / css替换只是没有采取。
IE7中是否有一些时髦的东西(除此之外,你知道,它是IE7)我在这里缺少什么?我查看了我的主题列出的建议问题,但似乎没有任何内容触及.html或.css根本没有触发。
答案 0 :(得分:3)
根据我们在评论中的讨论,您不应该使用数字来启动ID。
答案 1 :(得分:2)
当应用于Table或TBody元素时,似乎无法在IE7中安全地使用innerHTML。 这里有几个参考文献。
jQuery .html() not displaying any data in ie7, but ie8 works
希望有所帮助,两者都能提供周到的工作
修改
由于你的代码用普通的html(没有tr / td标签)替换了Table元素的内容,为什么不把你的表放在一个包含的div中,而是将fileExists / fileDoesNotExist类应用到那个div。