2009-09-26 29 views
1

嘿,我有一个代码,适用于所有现代浏览器,但不适用于IE 6,7。

$('.cat1').toggle(function() { 

    $(this).parent('li').next('ul').slideUp(); 
    $(this).css('background-position', '0px 0px'); 

    return false; 

}, function() { 

    $(this).parent('li').next('ul').slideDown(); 
    $(this).css('background-position', '-210px 0px'); 

    return false; 

}); 

它做了背景位置的变化,但不是slideUp或slideDown,为什么?

我认为这是因为$(this),但我不确定,如果是的话,有没有办法让它工作?

编辑:似乎问题可能在'next()'函数中。

+0

我知道,与表行,向上滑动下滑功能不起作用在IE中。它只是以波涛汹涌的方式显示或隐藏。在其他浏览器中,它工作正常。 – nickytonline 2009-09-26 12:53:13

+0

slideDown/slideUp复制粘贴错误后是否丢失分号? – 2009-09-26 12:53:50

+0

@sighohwell:不,它并不是,但即使在我将它合并后,也没有发生。 – Mike 2009-09-26 12:57:16

回答

1

很明显,$(this)有效或背景位置不会改变。我怀疑它与选择哪些元素有关,或者没有选择。我建议(因为它是IE),你打破了选择,并做了一些警报,找出哪些元素实际上被选中。也许IE在你点击的元素和你认为应该是父元素的列表元素之间插入一些额外的元素。如果是这样的话,改变使用最接近的('li')将是通过树导航回到包含列表元素的一种方式。

+0

尝试了'最接近'('li')',但是再次......在FF中工作,而不是在IE7,6 – Mike 2009-09-26 12:58:30

+0

然后你必须去调试路线。找出它认为$(this)是哪个元素,哪个元素是$(this).parent('li'),... – tvanfosson 2009-09-26 13:00:50

+0

另外,您可以尝试在IE7兼容模式下使用IE8。如果它以相同的方式失败,它具有更好的调试实用程序。 – tvanfosson 2009-09-26 13:01:26