2012-07-06 88 views
1

我一直在尝试做一个jQuery函数,它选择所有连接到它的复选框。这是我一直在努力的代码。我究竟做错了什么?jQuery复选框问题

<div id=checkboxes> 
<input type="checkbox" onclick="toggleChecked(this.checked)"> Select/Deselect All<br> 
<input type="checkbox" />Eggs<br> 
<input type="checkbox" />Butter<br> 
<input type="checkbox" />Milk<br> 
<input type="checkbox" />Bread<br> 
<input type="checkbox" />Jam<br> 
<input type="checkbox" />Tea<br> 
</div> 
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js">     
     function toggleChecked(status) 
      $(document).ready(function(){ 
      $("#checkall").click(function(){ 
      var status = $(this).attr('checked'); 
      $('.checkbox').attr('checked',status); 
      }); 
      }); 
</script> 

P.S:我在网上找到了这段代码。似乎为其他人工作。

+1

你不能只抓码断网,并期望它与你的HTML工作。那个JS引用了你的html中不存在的元素:你没有带''checkall''的元素或带有''复选框'''的元素。 – nnnnnn 2012-07-06 06:49:51

+0

我没有将它与我的代码合并。这些代码都被分解到不同的模块中。我把他们安排在一起。 – Shahzeb 2012-07-06 07:02:47

回答

-1

检查这个link。它在这里工作正常。

+0

是的。它在JSFiddle上运行良好。但是,当我将它复制到我的HTML并在Chrome上运行时,它突然停止工作。 :S – Shahzeb 2012-07-06 07:01:43

+0

你使用JSFiddle中的html吗?并且它说铬中的任何错误? – muthu 2012-07-06 07:08:09

+0

工作! :D原来我需要再次输入

0

试试这个:

<div id=checkboxes> 
<input type="checkbox" id="checkall"> Select/Deselect All<br> 
<input type="checkbox" />Eggs<br> 
<input type="checkbox" />Butter<br> 
<input type="checkbox" />Milk<br> 
<input type="checkbox" />Bread<br> 
<input type="checkbox" />Jam<br> 
<input type="checkbox" />Tea<br> 
</div> 
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js">     
      $(document).ready(function(){ 
       $("#checkall").click(function(){ 
       var status = $(this).attr('checked'); 
       $('input[type="checkbox"]').attr('checked',status); 
       }); 
      }); 
</script> 

这是Click事件处理程序结合的“负荷”的#checkall元素这是你想要什么,并采取的JavaScript的onclick()方法关闭元素。此外,您还需要将ID和ID添加到Select all元素以供选择器工作。

1

我认为ür短缺的大括号在调用函数...

function toggleChecked(status) 
    { 
     $(document).ready(function(){ 
     $("#checkall").click(function(){ 
     var status = $(this).attr('checked'); 
     $('.checkbox').attr('checked',status); 
     }); 
     }); 
    } 
2

有很多问题。您试图根据类选择器设置复选框,但没有任何复选框具有该类。此外,document.ready函数在您的事件处理程序中,应该是相反的方法... 使用prop()方法而不是attr()。并且正确安装的情况下,是这样的:

<div id=checkboxes> 
<input id="checkall" type="checkbox"> Select/Deselect All<br> 
<input class="checkbox" type="checkbox" />Eggs<br> 
<input class="checkbox" type="checkbox" />Butter<br> 
<input class="checkbox" type="checkbox" />Milk<br> 
<input class="checkbox" type="checkbox" />Bread<br> 
<input class="checkbox" type="checkbox" />Jam<br> 
<input class="checkbox" type="checkbox" />Tea<br> 
</div> 
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js">     

    $(document).ready(function(){ 
     $("#checkall").on("click", function(){ 
      var status = $(this).is(":checked"); 
      $('.checkbox').prop('checked', status); 
     }); 
    }); 

</script> 
0

或者,你可以这样做:

更改此

<input type="checkbox" /> 

<input type="checkbox" class="checkbox"/> 
0

出于某种原因,属性值"true"和布尔型true对于复选框是不同的。同样"false"和布尔false是不同的。

这是fiddle其中描述,尝试更改布尔false"false",你会明白。

在你的问题中,确保你在状态变量中接收到一个布尔值。

1

删除onclick并使其onchange