jQuery Checkbox问题

时间:2012-07-06 06:41:04

标签: jquery html

我一直在尝试创建一个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:我在网上发现了这个代码。似乎是为其他人工作。

7 个答案:

答案 0 :(得分: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>

答案 1 :(得分:1)

我想你在调用函数时错过了大括号......

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

答案 2 :(得分:1)

删除onclick并将其设为onchange

答案 3 :(得分: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事件处理程序绑定到“load”上的#checkall元素,这就是你想要的,并从元素中取出javascript onclick()方法。此外,您还需要为Select all元素添加和ID以使选择器起作用。

答案 4 :(得分:0)

或者你可以这样做:

更改此

<input type="checkbox" />

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

答案 5 :(得分:0)

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

以下fiddle描述了这一点,尝试将布尔false更改为"false",您就会理解。

在您的问题中,请确保您在状态变量中收到布尔值。

答案 6 :(得分:-1)

检查link。这里工作正常。