2013-02-13 4 views
0

나는이 무수한 시간을 해왔으며, 나는 그저 나를 괴롭 히고있다.내 토글이 실패하는 이유

모든 jquery 라이브러리 사용.

내가하려는 것은 링크를 통해 div를 토글하는 것입니다.

<a href="" id="mGoldNav">Click Me</a> 

는이 내 사이트에 내 jQuery 코드

$('#mGoldNav').click(function(){ 
    $('#module-golden-nav').toggle("slow"); 
}); 

입니다, 기본적으로 아무 일도 발생하지 않습니다. 나는 alert()를 놓았고, 그 소리가 나지 않아 click()이 작동한다. 그러나 토글은 실패합니다.

그러나 http://jsfiddle.net/BaQd2/1/에 당신은 한 번 작동하는 것을 알 수 있습니다,하지만 사라져 당신이 한 번 더 실행하면, 그것은 나에게 이상한 오류를 준다 : { "오류": "POST 요청을 사용하십시오"}

을 그게 왜 저를 망쳐 놓은 거죠?

감사합니다.

+1

클릭 핸들러에서 함수에 매개 변수로'e'를 추가하고 함수에서 'e.preventDefault();'를 추가하십시오. 귀하의 사이트에서 위 코드가'$ (function() {....}); 블록 내에 있는지 확인하십시오. – mccannf

+0

이 발생하지만 링크 동작에 의해 재정의됩니다. –

답변

1

click-callback의 끝에서 false을 반환하면 클릭 된 앵커를 따르는 브라우저의 기본 동작을 방지 할 수 있습니다.

이 작동합니다 :

$('#mGoldNav').click(function(){ 
    $('#module-golden-nav').toggle("slow"); 
    return false; 
}); 

DEMO

+0

또는 마크 업을 다음과 같이 변경하십시오 : ''또는 앵커 링크 대신 버튼을 사용하십시오 ... 나는 대답을 좋아합니다. +1 –

1

를가 앵커 태그입니다, 당신은

return false; 

를 사용할 필요가 토글 그것을 사용하려면 .. 기본 포스트 백 동작을 트리거합니다 이렇게 :

$('#mGoldNav').click(function(){ 
    $('#module-golden-nav').toggle("slow"); 
    return false; 
}); 
1

#과 같이 링크의 href 속성에 무엇인가 넣을 수도 있습니다. http://jsfiddle.net/BaQd2/2/

+0

참으로 바보입니다. 나는 그 링크를 멈추는 것을 완전히 잊었다. 나는 일반적으로 href = "javascript : void (0);"를 수행합니다. 고마워요! 긴 주간 LOL을 명확하게 지켰습니다. – ipixel

0

대신을 시도해보십시오

$('#mGoldNav').click(function(e){ 
    e.preventDefault(); 
    $('#module-golden-nav').toggle("slow"); 
}); 
+0

잘 작동하지만 왜 갑자기 e.preventDefault가 필요합니까? – ipixel

+0

preventdefault는 return false와 기능적으로 동일합니다. 이는 –

+0

@ E.J.Brennan에서도 작동합니다. false를 반환하는 것은 이벤트에서 preventDefault를 호출하는 것과 유사하지만 차이점이 있습니다. false를 반환하면 이벤트가 버블 링되지 않게되어 preventDefault는 이벤트를 중단시킵니다. 귀하의 경우에 버블 링을 중지하려면 이벤트에서 stopPropagation을 호출해야합니다. –

1

a 요소 단추로 사용하기 위해 실제로 좋은 생각이다. 하지만 귀하의 정의에 href 속성은 원치 않는 작업을 수행합니다. 당신이 # (또는 javascript:void(0))처럼 변경하면 당신은 당신이 원하는 것을 얻을 것이다 :

<a href="#" .. 

here합니다.

관련 문제