2011-09-05 5 views
0

링크를 클릭 할 때 맨 위로 스크롤해야하는 메뉴가 있습니다. 나는이 코드를 가지고있다.클릭 방법이 실행되지 않음

$('a').click(function(){ 

$('.positionHelper').scrollTo({top:'-800px', left:'0'}, 0); 

}); 

코드는 핸들러 기능 만 파이어 버그 콘솔에서 실행될 때 작동하지만 선택기에 클릭을 연결하면 작동하지 않습니다. 유일한 예외는 $ ('html')에 첨부 한 것입니다. 나는 해고했다

나는 많은 다른 셀렉터와 아무 작업도없이 이것을 테스트했다.

+0

답변을 찾았습니까? –

답변

1

HTML이 동적으로 생성 된 경우 (페이지로드 이후) .live 메소드를 사용해야합니다. 귀하의 코드는 다음과 같습니다 :

$('a').live('click', function(){ 

$('.positionHelper').scrollTo({top:'-800px', left:'0'}, 0); 

}); 
+0

이이를 확인하고 답이 될 수 있습니다. –

1

DOM을로드 한 후 이벤트 처리기를 연결합니까?

$(document).ready(function() { 
    $('a').click(function() { .... }; 
}); 

또 다른 가능한 원인은 a- 태그가 응용 프로그램 수명 이후에 렌더링된다는 것입니다. 따라서 사용 바인딩 것 :

$('a').live('click', function() { ... }); 
0

을 당신이 a 요소에 이벤트를 바인딩하는 경우에는 반드시 하이퍼 링크 때문에 이벤트가 발생 할 여지가 발생하지 않습니다 수 있도록 preventDefault을 사용해야합니다.

$('a').click(function(event){ 

    event.preventDefault(); 
    $('.positionHelper').scrollTo({top:'-800px', left:'0'}, 0); 

}); 
1

문서 준비 기능에서 코드를 래핑해야 할 수도 있습니다. 그래서 같이 :

$(document).ready(function() { 
    $('a').click(function(){ 
     $('.positionHelper').scrollTo({top:'-800px', left:'0'}, 0); 
     return false; 
    }); 
}); 

귀하의 문제는 이제 클릭 이벤트가 원하는처럼 앵커 (들)에 바인딩되지 않도록 DOM이 완전히, 아직로드되지 않도록 할 수있다. 또한, false를 반환하거나 '기본값을 방지'를 추가하여 href 속성에 지정된 실제 URL에 브라우저가 나타나지 않고 코드가 실행되도록 할 수 있습니다.

관련 문제