如何使每个循环在IE7中工作?

时间:2011-02-27 20:52:51

标签: javascript jquery

我目前正在开展一个项目,根据表格单元格的内容隐藏/显示一些表格行。

我正在使用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中使这个工作?

2 个答案:

答案 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条目。)