2011-08-05 6 views
0

클릭 할 때 Jquery를 사용하여 클래스를 변경 한 두 개의 버튼이 있습니다. 경고를 먼저 호출하면 문제가 발생합니다.Jquery와 동기화 문제 - 경고없이 작동하지 않습니다.

나는 이것이 아직로드되지 않았기 때문에, 하지만 나는 누가 그리고 왜 이해할 수 없다는 것을 알고 있습니다.

 <input type="button" id="About" class="menu_button" value="About"/> 
    <input type="button" id="Contact" class="menu_button" value="Contact" /> 

    <script>  

     $(".menu_button").click(function() 
      { 
       //alert("onMenuClick"); 
       $(".menu_button").removeClass("menu_button_selected"); 
       $(this).addClass("menu_button_selected"); 
      }); 


     </script> 

감사 :

이 내 코드입니다!

+0

이 jsfiddle에 코드를 붙여 - http://jsfiddle.net/da7bV/1/ - 나는 그것에 어떤 문제도 보지 않는다. 너에게 효과가 있니? –

+0

예, jsfiddle에서 작동하지만 여전히 내 사이트에서 작동하지 않습니다 – koela1

+0

내가 잘못하고있는 뭔가가있을 수 있습니까? – koela1

답변

0

파이어 폭스에서 나를 위해이 스크립트는 잘 작동 :

<script type="text/javascript"> 

$(document).ready(function() { 


$(".menu_button").bind('click',function() 
     { 
      //alert("onMenuClick"); 
      $(".menu_button").removeClass("menu_button_selected"); 
      $(this).addClass("menu_button_selected"); 
     }); 
} 
</script> 
+0

그것은 저에게 효과적이지 않습니다. . 경고 메시지의 주석을 제거 할 때만 – koela1

1

에 좋은 일이 항상 있다는 것을 onload 이벤트

$(function() { 
$(".menu_button").click(function() 
      { 
       //alert("onMenuClick"); 
       $(".menu_button").removeClass("menu_button_selected"); 
       $(this).addClass("menu_button_selected"); 
      }); 
}); 

이유는 내부에 코드를 삽입해야한다 항상 일부 브라우저는 DOM 트리가 아직 완전히로드되지 않았고 요소가 없거나 아직 사용할 수없는 경우에도 JS를 실행할 수 있습니다. jQuery 함수 $(function() { ... });은 모든 것이로드되고 준비되었을 때만 코드가 실행되도록합니다.

** UPDATE **

<script type="text/javascript"> 
    // js here 
</script> 

그리고 here은 당신이 준 코드를 작동하는지 보여주는 jsfiddle에 시험처럼 당신의 script 태그가 보일 것입니다. 그것이 당신을 위해 작동하지 않는다면, 당신의 문제는 어딘가에 있습니다. Google Chrome을 사용하고 Javascript를 디버그하기위한 개발 도구를 사용하는 것이 좋습니다.

+0

나를 위해 작동하지 않습니다 – koela1

0

는 랩 $(function(){});의 코드는이 코드에만 DOM이 준비가 될 때 실행된다는 것을 의미합니다 :

<script>  

    $(function(){ 

     $(".menu_button").click(function() 
     { 
      //alert("onMenuClick"); 
      $(".menu_button").removeClass("menu_button_selected"); 
      $(this).addClass("menu_button_selected"); 
     }); 

    }); 

</script> 
+0

.... – koela1

+0

이 클래스가 적용되지 않습니까? 그들은 적용되고 있을지도 모르지만 당신은 CSS 또는 작풍에있는 다름을 볼 수 없다. Chrome 또는 Safari에서 버튼을 마우스 오른쪽 버튼으로 클릭하고 "요소 검사"를 클릭 했습니까? 이렇게하면 DOM에 현재 표시된 요소가 표시됩니다. – betamax