某Web应用,为了方便浏览,使用表格进行汇总时,初始化状态仅显示概要,若点击该行才用显示下面的详细内容。用jQuery 来实现本来是很简单的事情,在IE 7 测试时很顺利。但Win 7下发现,IE 8中动作失效了。经查找原因,原来是jQuery 1.3.2的Bug。该问题早在网上有不少介绍:这里,转载如下:
一、问题描述
HTML代码:
<table>
<tr><td class="Q">Q1: 問題1</td></tr>
<tr><td class="A">A1: 解說1</td></tr>
<tr><td class="Q">Q2: 問題2</td></tr>
<tr><td class="A">A2: 解說2</td></tr>
<tr><td class="Q">Q3: 問題3</td></tr>
<tr><td class="A">A3: 解說3</td></tr>
</table>
<tr><td class="Q">Q1: 問題1</td></tr>
<tr><td class="A">A1: 解說1</td></tr>
<tr><td class="Q">Q2: 問題2</td></tr>
<tr><td class="A">A2: 解說2</td></tr>
<tr><td class="Q">Q3: 問題3</td></tr>
<tr><td class="A">A3: 解說3</td></tr>
</table>
jQuery 代码:
$('td.Q').click(function() {
$(this).parent().next().toggle();
});
$(this).parent().next().toggle();
});
在IE 8 的“兼容性视图模式”或IE 7、FireFox等浏览器环境中,都是正常的状态。这可用IE 8 的“开发人员工具”(在浏览器中按 F12 调用),或FireFox的FireBug来分析:
二、解决问题
该问题只在jQuery 1.3.2上存在,jQuery 1.3.0、jQuery 1.3.1都没有该Bug。可用下面的代码解决:
$('td.Q').click(function() {
var tr = $(this).parent().next();
tr.toggle(tr.css('display') == 'none');
});
var tr = $(this).parent().next();
tr.toggle(tr.css('display') == 'none');
});
三、参考资料
[jQuery 1.3.2] 在 IE8 的 <table> <tr> 使用 toggle() 無法生效的解決方法
jQuery 1.3.2 causes problems at IE 8
$().toggle() does not work with <tr> in IE 8
jQuery API toggle()
使用ajaxfileupload.js插件实现Ajax方式上传文件
jQuery中html()方法在IE 和 FireFox 的差别
[转] jQuery 选择器
jQuery介绍
jQuery中html()方法在IE 和 FireFox 的差别
[转] jQuery 选择器
jQuery介绍
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/104520.html