2009-09-26 62 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