2013-01-14 29 views
2

我在jsfiddle.net上使用下面的代碼和實時預覽工作。運行我自己的本地副本,並沒有什麼...爲什麼我的jQuery不在本地工作?

複選框應該在單選按鈕上單擊更改。

的jsfiddle預覽:http://jsfiddle.net/XqFDN/

<html> 
<head> 
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js" ></script> 
    <script> 
     jQuery('#3day').click(function() { 
      jQuery('#mon , #tue , #wed').attr('checked', true); 
     }); 
     jQuery('#2day , #1day').click(function() { 
      jQuery('#mon , #tue , #wed').attr('checked', false); 
     }); 
    </script> 
</head> 

<body> 
    <form> 
     <input type="radio" name="passes" value="3day" id="3day" />3-Day 
     <input type="radio" name="passes" value="2day" id="2day" />2-Day 
     <input type="radio" name="passes" value="1day" id="1day" />1-Day 
     <br /> 

     <input type="checkbox" name="mon" value="mon" id="mon" />Mon 
     <input type="checkbox" name="tue" value="tue" id="tue" />Tue 
     <input type="checkbox" name="wed" value="wed" id="wed" />Wed 
     <br /> 
    </form> 
</body> 
</html> 
+0

在你的小提琴的「選擇框架」下,你選擇了「無包裹(身體)」。你粘貼的代碼相當於「無包裝(頭)」選項。 –

+1

你知道嗎,你只需要以長格式編寫'jQuery'一次?通過將代碼封裝在'(function($){....})(jQuery);'中,無論是否使用了noConflict,都可以使用'$'。 //你應該使用'.prop('checked',true_or_false)'而不是'attr' – ThiefMaster

+0

我甚至沒有想過使用.prop作爲.attr工作正常 - 謝謝。 – mpdc

回答

8

你需要用你的jQuery代碼在文檔準備好處理程序。試試這個:

<script type="text/javascript"> 
    jQuery(function() { // alternative: $(document).ready(function() { 
     jQuery('#3day').click(function() { 
      jQuery('#mon , #tue , #wed').attr('checked', true); 
     }); 
     jQuery('#2day , #1day').click(function() { 
      jQuery('#mon , #tue , #wed').attr('checked', false); 
     }); 
    }); 
</script> 

這個機箱可以確保其中的代碼在加載DOM時運行。目前,您的代碼正嘗試將click事件附加到尚不存在的元素。

+2

正確。而粘貼小提琴的作品,不是因爲它在DOMReady中執行,而是因爲它在BODY底部執行。 –

+0

謝謝 - 一個簡單的解決方法,我會盡我所有的編碼。 – mpdc