我目前正在开展一个项目,根据表格单元格的内容隐藏/显示一些表格行。
我正在使用jQuery的每个方法遍历表行,这在除IE7之外的所有现代浏览器中都能正常工作。
这是我的代码:
$('li').click(function() {
var listLetter = $(this).text();
$("td").hide();
$("tr").each(function(){ // this is where IE7 goes huh
var cellLetter = $("td:first", this).text().substr(0,1);
if (cellLetter == listLetter) {
$('td', this).show();
}
})
});
有没有办法在IE7中使这个工作?
答案 0 :(得分:2)
发现最后的问题。将.substr(0,1)添加到第一行:
var listLetter = $(this).text().substr(0,1);
现在,对于所有字母,IE7上的比较将返回true。不知道这里出了什么问题。
答案 1 :(得分:2)
尝试更改:
$('td', this).show();
到
$('td', $(this)).show();
我不知道IE的问题是什么,也不知道为什么它可以在IE8和其他浏览器中工作,但不能用于IE7。 jQuery人似乎不喜欢那种形式,更喜欢:
$(this).find('td').show();
这就是jQuery的内部结构。
我很笨 - 好吧无论如何我认为关键在于对文本使用$.trim()
的建议 - 除了必须 到“listLetter”和“cellLetter”!!
如果你的表格HTML / CSS是表格单元格开始不可见,那么这可能是问题所在。我发现(对于IE6和IE7无论如何; IE8似乎工作正常),如果你给浏览器一个表,其中部分(根据我的经验,通常它必须是整列,可能是行)设置为不通过CSS以某种方式显示(“display:none”)(内联样式或单独的CSS),然后表格中的那些元素可以永远变得可见。
I asked about this problem here前一段时间,并没有提出任何建议。 (测试HTML文件仍在运行;我应该将它们变成jsFiddle条目。)