2012-07-24 2 views
0

어떻게 작동시키는 지 알 수 없습니다. 몇 가지 대안을 시도했습니다. 윈도우가 .accordion> dt의 상단에 스크롤되도록 설정합니다. 현재이 코드는 패널을 열어 페이지를 다시로드하기 시작합니다.간단한 jQuery 아코디언에 window.scrollTo 추가하기

(function($) { 

    var $j = jQuery.noConflict(); 
    var allPanels = $j('.accordion > dd').hide(); 

    $('.accordion > a > dt').click(function() { 
     $this = $j(this); 
     $target = $this.parent().next(); 


     if (!$target.hasClass('active')) { 
      allPanels.removeClass('active').slideUp(); 
      $target.addClass('active').slideDown(); 
      window.scrollTo($(".accordion").offset().top); 
     } 

     return false; 
    }); 

})(jQuery); 

답변

0

DT 요소가 앵커 태그에있는 것처럼 보입니다. false를 반환하면 DT 요소의 기본 클릭 동작이 중지되지만 이벤트가 링크까지 전파되지 않도록해야합니다.

$('.accordion > a > dt').click(function(e) { 

    $this = $j(this); 
    $target = $this.parent().next(); 


    if (!$target.hasClass('active')) { 
     allPanels.removeClass('active').slideUp(); 
     $target.addClass('active').slideDown(); 
     window.scrollTo($(".accordion").offset().top); 
    } 

    e.stopPropagation(); 
    return false; 

}); 
+0

제안 해 주셔서 감사합니다. 하지만 복사해서 붙여 넣기 만하면 작동하지 않는 것 같습니다. 파이어 폭스에서는 페이지를 다시로드하고 Safari에서는 오른쪽으로 점프하고 클릭 한 아코디언 패널은 맨 위에 있지 않습니다. 이 코드를 내 코드로 대체하는 것 외에 다른 작업을 수행해야합니까? –

+0

몇 가지 샘플 HTML로 질문을 업데이트하거나이 바이올린을 사용할 수 있습니까? http://jsfiddle.net/nqr5C/ –

+0

jsfiddle에서 잘 작동하지만 코드에서 구현하려고하면 작동하지 않습니다. 난 당신이 설정 한 바이올린의 모든 측면을 가진 간단한 일반 HTML 문서를 시도해도 작동하지 않았습니다. 그런 다음 jsfiddle 페이지의 왼쪽에있는 "panels"테이블로 이동하여 "javascript"를 javascript 1.7로 변경하고 1.7 버전은 내가 얻은 결과를 보여줍니다. 1.7.2의 google jquery 링크를 사용하고 있습니다 또한 내 html로 간다 : <= "아코디언"DL 클래스> panel name

패널의 컨텐츠 지금까지 도움을
감사합니다! –

관련 문제