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

+0

slideDown/slideUp 복사 붙여 넣기 오류 후 누락 된 세미콜론이 있습니까? –

+0

@sighohwell : 아니요, 아니었지만, 내가 중재 한 후에도 아무 일도 없었습니다. – Mike

답변

1

분명히 $ (this)가 작동하거나 배경 위치가 변경되지 않습니다. 나는 그것이 어떤 요소가 선택되고 있거나 오히려 선택되어 있지 않은 것과 관련이 있다고 생각한다. IE를 사용하기 때문에 선택을 중단하고 실제로 어떤 요소가 선택되는지 알아내는 몇 가지 경고를하는 것이 좋습니다. 아마 IE는 당신이 클릭하고있는 엘리먼트와 그것이 부모가되어야한다고 생각하는리스트 엘리먼트 사이의 DOM에 몇 가지 추가 엘리먼트를 삽입하고있다. 그렇다면 closest ('li')를 사용하여 트리를 탐색하여 포함 목록 요소를 가져 오는 방법이 될 수 있습니다.

+0

try '가장 가까운 ('리 ')',하지만 다시 ... FF로, IE7에서 작동하지 않는다 – Mike

+0

당신은 디버깅 경로를 누른 다음 갈거야. 어떤 요소가 $ (this)인지, 어떤 요소가 $ (this) .parent ('li')인지를 알아보십시오. – tvanfosson

+0

또한 IE8 호환성 모드에서 IE8을 사용해 볼 수도 있습니다. 같은 방식으로 실패하면 더 나은 디버깅 유틸리티가 있습니다. – tvanfosson