jQuery this.checked Not Working

时间:2014-12-19 12:55:14

标签: jquery datatables

我的这段代码不起作用。我做错了什么?

$("#checkall").click(function () {
    $("input", myTable.fnGetNodes()).each(function () {                    
        $("input", myTable.fnGetNodes()).prop("checked", this.checked);
    });                            
});


看来这个.each函数的当前值不能检查属性。我哪里错了?

这是我的标记

<table class="table display" id="userviewtable">
            <thead>
                <tr>
                    <th id="checkall"><input type="checkbox" /></th>
                    <th>User ID</th>
                    <th>User Name</th>
                    <th>Staff ID</th>

                </tr>
            </thead>

            <tfoot>
            <tr>
                <th><input type="checkbox" /></th>
                <th>User ID</th>
                <th>User Name</th>
                <th>Staff ID</th>

            </tr>
            </tfoot>
        </table> 

在脚本方面我有以下内容:

var myTable=$("#userviewtable").dataTable(); //to initialize my table with data
 $("#checkall").click(function () {
        $("input", myTable.fnGetNodes()).each(function () {                    
            $("input", myTable.fnGetNodes()).prop("checked", this.checked);
        });                            
    });

谢谢

2 个答案:

答案 0 :(得分:1)

您的代码应为:

$("#checkall").change(function () {
    $("input", myTable.fnGetNodes()).prop("checked", this.checked);
});

答案 1 :(得分:0)

如果不知道程序应该实现什么,很难知道你需要知道什么。但希望这会有所帮助。

每个函数中this的值将具有与$("input", myTable.fnGetNodes())匹配的元素的值。

如果您希望元素的值与$("#checkall")匹配,则可以将此值分配给each函数之外的var。

您还要两次匹配$("input", myTable.fnGetNodes())。每个都将它的函数参数应用于选择中匹配的每个元素。

作为在this函数中使用each的替代方法,可以为传递给每个函数的函数提供参数,第一个是索引,第二个是单个元素匹配。

$("#checkall").click(function () {
    var checked = this.checked;
    $("input", myTable.fnGetNodes()).each(function (ind,ele) {                    
        $(ele).prop("checked", checked);
    });                            
});

如果你想对匹配的每个元素应用相同的简单动作,那么每个都不是绝对必要的,因为该函数将应用于匹配的每个元素:

$("#checkall").click(function () {
    $("input").prop("checked", this.checked);
});