选中带有文本链接的所有复选框:错误

时间:2014-02-05 20:59:48

标签: javascript jquery

我一直在尝试根据以下链接为表单创建一个“全选”复选框,但我不断收到错误。我已经搜索过,但是没有运气搞清楚这一点。我不确定我是否正确设置了选择器。任何帮助都将非常感激!

Select all checkboxes with a text link

表格

<li id='field_1_17' class='gfield gfield_html gfield_html_formatted gfield_no_follows_desc' >
    <a href="#' id="checkall">Select all checkboxes</a>
</li>

<li id='field_1_12' class='gfield' >
    <label class='gfield_label'>Wednesday 1/22</label>
    <div class='ginput_container'>
        <ul class='gfield_checkbox' id='input_1_12'>
            <li class='gchoice_12_1'>
                <input name='input_12.1' type='checkbox' value='2:30-2:40 Welcome and introduction' id='choice_12_1' tabindex='11' />
                <label for='choice_12_1'>2:30-2:40 Welcome and introduction</label></li>

从其他帖子中使用的脚本

<script type="text/javascript">
    $(function () {
        $('#checkall').click(function () {
            var checked = $(this).data('checked');
            $('input_1_12').find(':checkbox').attr('checked', !checked);
            $(this).data('checked', !checked);
        });
    });
</script>

2 个答案:

答案 0 :(得分:1)

你有一个缺失点。

$('input_1_12').find(':checkbox').prop('checked', !checked);

应该是:

$('.input_1_12').find(':checkbox').prop('checked', !checked);

甚至更好:

$('.input_1_12[input[type="checkbox"]').prop('checked', !checked);

<强>更新 已将attr()更改为prop(),因为attr方法需要一个字符串。

更新2:以下是您可以使用attr

执行的操作
var checked = $(this).data('checked'),
    checkboxes = $('.input_1_12[input[type="checkbox"]');
if (checked) {
    checkboxes.removeAttr("checked");
}else {
    checkboxes.attr("checked","checked");
}

答案 1 :(得分:0)

ID选择器以#开头,您应该使用prop()设置选中的属性

$(function () {
    $('#checkall').on('click', function () {
        var checked = $(this).data('checked');
        $('#input_1_12 [type="checkbox"]').prop('checked', !checked);
        $(this).data('checked', !checked);
    });
});