2011-02-24 109 views
1
$(document).ready(function(){ 
    function set_checked { 
     alert('test'); 
     $('*:checkbox').attr('checked', checked); 
    } 
}); 

而且这个网站检查所有复选框使用jQuery

<input onclick="set_checked()" value="Check all" type="button" /> 

不出于某种原因。没有警报框或什么都没有。

+0

使用萤火虫或其他JavaScript控制台可以帮助防止这种问题,因为他们会告诉你,如果你有语法错误。 – rennat 2011-02-24 17:08:49

回答

4

你有几个问题,

  • set_checked函数定义缺少括号
  • 是心不是真正的全球

使用jQuery未定义的变量checked

  • onclick引用全局函数它是更好使用jQuery click方法将点击事件添加到元素。 这里是如何正确使用jQuery做到这一点。

    $(document).ready(function(){ 
        // If you want to use the `set_checked` function elsewhere do this 
        function set_checked() { 
         $('*:checked').attr('checked', true); 
        } 
        $('#check_all').click(set_checked); 
    
        // If you are only doing `set_checked` on the button press do this 
        $('#check_all').click(function() { 
         $('*:checked').attr('checked', true); 
        }); 
    }); 
    
    <input id="check_all" value="Check all" type="button"/> 
    
  • +0

    喜欢点击(函数()(...)更好,现在工作谢谢 – ganjan 2011-02-24 17:32:04

    +0

    你是不是''.prop'而不是'.attr'? – 2013-10-04 06:29:47

    +0

    是的我的意思是'.attr',因为它是2011年合适的jQuery方法但您提出了一个有效的观点,即当前版本的jQuery建议使用'.attr'作为元素属性,'.prop'作为DOM对象属性。请参见[jQuery'.prop'文档页面](http://api.jquery。 com/prop /)获取更多关于'.prop'行为的信息。 – rennat 2013-10-04 16:07:42

    2

    尝试:

    function set_checked() { 
         alert('test'); 
         $('*:checkbox').attr('checked', 'checked'); 
        } 
    

    你忘了()

    编辑:有人说下面的检查必须是一个字符串。

    0

    让你的JavaScript函数:

    function set_checked() { 
        alert('test'); 
        $('input:checkbox').attr('checked', 'checked'); 
    } 
    

    你的函数定义不正确,因为它是缺失的名称定义中的括号内。

    编辑:也缺少检查属性上的引号。也使选择器更加明确。

    0

    您没有正确创建该功能。您需要在set_checked{之间添加()

    3
    $('*:checkbox').attr('checked', checked); 
    

    据推测解析为

    $('*:checkbox').attr('checked', undefined); 
    

    你应该有

    $('*:checkbox').attr('checked', 'checked'); 
    
    0

    边注:没有理由把里面$(document).ready();你的职责,那是必须在启动时运行的东西。

    更新:

    我下面的例子来扔的,你想这样做jQuery的风格全宽。

    HTML:

    <p><input id='test' type='submit' value='Click me' onclick='checkAll();' /></p> 
    <p>Let's see:</p> 
    <ul> 
        <li><input type='checkbox'></li> 
        <li><input type='checkbox'></li> 
        <li><input type='checkbox'></li> 
    </ul> 
    

    的JavaScript:

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

    您可以测试它here

    0

    更换整个示例代码:

    $(document).ready(function(){ 
        function set_checked { 
         alert('test'); 
         $('*:checkbox').attr('checked', checked); 
        } 
    }); 
    

    有:

    function set_checked() { 
        alert('test'); 
        $('*:checkbox').attr('checked', 'checked'); 
    } 
    

    正如其他人所说,你需要()的函数定义,和引号 '检查',但你也需要在全局范围内定义的函数,因此不在jQuery的准备处理程序中。

    0

    您在函数内部定义了set_checked函数,这意味着它不在全局范围内,并且无法通过输入点击事件来访问。