2011-08-05 23 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

下的Firefox這個腳本的工作對我罰款:

<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標籤應該像

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

而且here上的jsfiddle測試顯示,它爲你提供的錯誤代碼。如果它不適合你,那麼你的問題就在別的地方。我建議你使用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