为什么checkall代码不起作用?

时间:2011-07-20 07:49:26

标签: jquery

html代码:

<div>

        <input type="checkbox" onclick="selectAll(this);" />select all<br/>
        <input type="checkbox"  /><br/>
        <input type="checkbox"  /><br/>
        <input type="checkbox"  /><br/>
        <input type="checkbox"  /><br/>
        <input type="checkbox"  /><br/>
        <input type="checkbox"  /><br/>
</div>

jquery代码:

    $(document).ready(function(){
  function selectAll(checkbox){
    alert("test");
    $("input[type=checkbox]").attr('checked',$(checkbox).attr('checked'));
    }
    });

为什么选择和取消选择all都不起作用。当我把警告语句用于测试代码的错误时。警报也不起作用。

我想知道为什么我的代码不起作用?

4 个答案:

答案 0 :(得分:2)

使用jQuery轻松“全部检查”

HTML:

<div>
        <input type="checkbox" class="checkall" />select all<br/>
        <input type="checkbox"  /><br/>
        <input type="checkbox"  /><br/>
        <input type="checkbox"  /><br/>
        <input type="checkbox"  /><br/>
        <input type="checkbox"  /><br/>
        <input type="checkbox"  /><br/>
</div>

jQuery的:

$(function () {
    $('.checkall').click(function () {
        $(this).parents('div').find(':checkbox').attr('checked', this.checked);
    });
});

答案 1 :(得分:1)

你有一个额外的引用$("input[type=checkbox]").attr('checked',**'**$(checkbox).attr('checked'));

并拼错警告

并且没有复选框变量

我没有看到没有selectAll函数(你可以删除这个内联的东西)

<div>

        <input type="checkbox" class="checkall" />select all<br/>
        <input type="checkbox"  /><br/>
        <input type="checkbox"  /><br/>
        <input type="checkbox"  /><br/>
        <input type="checkbox"  /><br/>
        <input type="checkbox"  /><br/>
        <input type="checkbox"  /><br/>
</div>

$('.checkall').change(function() {
  $('input[type="checkbox"]').attr('checked', $(this).attr('checked'));
});

在等号

之后你缺少强制性引号

基本上你的代码有很多问题。 :)

修改

OP完全改变了他的代码:P

答案 2 :(得分:1)

文档加载后,

$(document).ready将触发。它不是命名函数。

您的HTML假设有一个名为selectAll的函数。

尝试使用以下内容交换$(document).ready

function selectAll(checkbox)
{
    alert("test");
    $("input[type=checkbox]").attr('checked',$(checkbox).attr('checked'));
}

<强>更新

定义函数不会执行该函数。因此,定义不需要在$(document).ready内。只有在单击第一个复选框时才会调用它。

答案 3 :(得分:1)

您的代码没有多大意义。您当前正在做的是将事件处理程序传递给ready方法,该方法检查文档就绪的所有输入。只有你修正了拼写错误才会发生这种情况。

您需要的是:http://jsfiddle.net/NJuqm/

//Should be inside $(document).ready()
$('#sel_all').click(function(){
    if (this.checked) {
        $('input:checkbox').attr('checked', 'checked');
    } else {
        $('input:checkbox').removeAttr('checked');
    }
});

    <input type="checkbox" id='sel_all'/>select all<br/>
    <input type="checkbox"  /><br/>
    <input type="checkbox"  /><br/>
    <input type="checkbox"  /><br/>
    <input type="checkbox"  /><br/>
    <input type="checkbox"  /><br/>
    <input type="checkbox"  /><br/>