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

Javascript 如何使每个循环在IE7中工作?,javascript,jquery,Javascript,Jquery,我目前正在进行一个项目,在该项目中,我根据表格单元格的内容隐藏/显示一些表格行 我使用jQuery的each方法来循环表行,这在除IE7之外的所有现代浏览器中都能很好地工作 这是我的代码: $('li').click(function() { var listLetter = $(this).text(); $("td").hide(); $("tr").each(function(){ // this is where IE7 goes huh var

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


我使用jQuery的each方法来循环表行,这在除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中实现这一点?

找到了最后一个问题。将.substr0,1添加到第一行:

var listLetter = $(this).text().substr(0,1);

现在,在IE7上,所有字母的比较都将返回true。不确定这里出了什么问题。

找到了最后的问题。将.substr0,1添加到第一行:

var listLetter = $(this).text().substr(0,1);
现在,在IE7上,所有字母的比较都将返回true。我不知道这里出了什么问题。

这是经过编辑的-我留下了下面的原始内容,这实际上不是问题所在,但不管怎样。 尝试更改:

        $('td', this).show();

我不知道IE的问题是什么,也不知道为什么它可以在IE8和其他浏览器中工作,但不能在IE7中工作。jQuery用户似乎并不喜欢这种形式,他们更喜欢:

         $(this).find('td').show();
这就是jQuery的内部功能

哎呀,我很笨-好吧,不管怎样,我认为关键在于建议在文本上使用$.trim-除了它必须同时对listLetter和cellLetter执行

起初的 如果表格HTML/CSS使表格单元格开始时不可见,那么这可能就是问题所在。我发现IE6和IE7都是这样;IE8似乎工作正常,根据我的经验,如果你给浏览器一个表,其中的一部分必须是整列,可能行被设置为不显示:不显示由CSS以某种方式以直线样式或单独的CSS显示,那么表中的这些元素永远无法显示

不久前,提出的建议没有一个真正起作用。测试HTML文件仍在运行;我应该把它们编成JSFIDLE条目。

这是经过编辑的-我在下面留下了原始内容,这实际上不是这里的问题,但不管怎样。 尝试更改:

        $('td', this).show();

我不知道IE的问题是什么,也不知道为什么它可以在IE8和其他浏览器中工作,但不能在IE7中工作。jQuery用户似乎并不喜欢这种形式,他们更喜欢:

         $(this).find('td').show();
这就是jQuery的内部功能

哎呀,我很笨-好吧,不管怎样,我认为关键在于建议在文本上使用$.trim-除了它必须同时对listLetter和cellLetter执行

起初的 如果表格HTML/CSS使表格单元格开始时不可见,那么这可能就是问题所在。我发现IE6和IE7都是这样;IE8似乎工作正常,根据我的经验,如果你给浏览器一个表,其中的一部分必须是整列,可能行被设置为不显示:不显示由CSS以某种方式以直线样式或单独的CSS显示,那么表中的这些元素永远无法显示



不久前,提出的建议没有一个真正起作用。测试HTML文件仍在运行;我应该将它们转换成JSFIDLE条目。

每个构造在IE7中都可以正常工作。你到底出了什么问题?有JavaScript错误吗?什么都没有发生-没有JavaScript错误,表行不显示。我在一个使用EmulateIE7 meta标记的网站上工作,当我注释掉标记时,一切都正常。这里的工作示例:在除IE7之外的所有现代浏览器中都正常工作。。。。我认为IE7不是一款现代浏览器-由于您只关注文本的第一个字符,我会尝试修剪空白,以防IE插入一些字符。var cellLetter=$.trim$td:first,this.text.substr0,1;每个构造在IE7中都可以正常工作。你到底出了什么问题?有JavaScript错误吗?什么都没有发生-没有JavaScript错误,表行不显示。我在一个使用EmulateIE7 meta标记的网站上工作,当我注释掉标记时,一切都正常。这里的工作示例:在除IE7之外的所有现代浏览器中都正常工作。。。。我认为IE7不是一款现代浏览器-由于您只关注文本的第一个字符,我会尝试修剪空白,以防IE插入一些字符。var cellLetter=$.trim$td:first,this.text.substr0,1;回到个人电脑上的IE5,我从来没有用过让IE开心。也许MacOS IE5.5需要它…看看源代码,您现在似乎缺少了/表。你能解决这个问题吗?@Pointy浏览器是不确定的机器:回到个人电脑上的IE5,我从来没有用过让IE开心。也许MacOS IE5.5需要它…看看源代码,您现在似乎缺少了/表。你能解决这个问题吗?@Pointy浏览器是不确定的机器:我同意你最后的代码片段是更好的形式。我已经更新了我的示例,但结果是一样的:@timki-是的,结果证明我一定花了一些时间产生幻觉。。。但是我认为我已经找到了真正的问题。您也必须调用$.trim来查看文件的内容!美元修剪完成了!非常感谢你帮助我-这个论坛太酷了首先是@patrick dw提出了修剪的建议——对我来说,这花了很多令人尴尬的调试时间
o了解发生了什么:-我同意您的上一个代码片段是更好的形式。我已经更新了我的示例,但结果是一样的:@timki-是的,结果证明我一定花了一些时间产生幻觉。。。但是我认为我已经找到了真正的问题。您也必须调用$.trim来查看文件的内容!美元修剪完成了!非常感谢你帮助我-这个论坛太酷了首先是@patrick dw建议进行修剪-我花了大量令人尴尬的调试才意识到发生了什么:-