Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
选中复选框表jQuery中仅选中一行的复选框_Jquery_Asp.net Mvc_Asp.net Mvc 4_Loops_Checkbox - Fatal编程技术网

选中复选框表jQuery中仅选中一行的复选框

选中复选框表jQuery中仅选中一行的复选框,jquery,asp.net-mvc,asp.net-mvc-4,loops,checkbox,Jquery,Asp.net Mvc,Asp.net Mvc 4,Loops,Checkbox,这似乎没什么大不了的,但我还是无法解决问题: 在我的razor视图中,我显示了许多由三列组成的复选框,我想为每行创建一个复选框,每3个复选框检查所有行,下面是我使用jQuery所做的: <table> <tr> @{ int cnt = 0; string sr =null; string j = null;

这似乎没什么大不了的,但我还是无法解决问题: 在我的razor视图中,我显示了许多由三列组成的复选框,我想为每行创建一个复选框,每3个复选框检查所有行,下面是我使用jQuery所做的:

   <table>
        <tr>
            @{
                int cnt = 0;
                string sr =null;
                string j = null;
                List<Security.Models.AssignedRolesVM> Roles = ViewBag.tp_role;

                foreach (var role in Roles)
                {
                    if (cnt++ % 3 == 0)
                    { sr=cnt.ToString();
                      j =(cnt+1).ToString();
                     @:</tr><tr>
                         @: <td><input type="checkbox" id=j  /></td>
                            <script src="~/Scripts/jquery-1.10.2.min.js">
                            </script>
                            <script type="text/javascript">
                                $(function () {
                                    $(j).click(function () {
                                        $('input[name=sr]').prop("checked", $(this).prop("checked"));
                                    });
                                    $('input[name=sr]').click(function () {
                                        if ($('input[name=sr]').length == $('input[name=sr]:checked').length) {
                                            $(j).prop("checked", "checked");
                                        }
                                        else {
                                            $(j).removeProp("checked");
                                        }

                                    });
                                });
                            </script>
                    }
                    @:<td>
                        <input type="checkbox"
                           name=sr
                           class="checked"
                           value="@role.RoleID"
                           @(Html.Raw(role.Assigned ? "checked=\"checked\"" : "")) />
                           @role.RoleID @:  @role.Name
                    @:</td>
                }
                @:</tr>
            }
    </table>
但它并没有只选中行,而是选中所有复选框。
在我看来,循环是正确的,每次它是模3时,sr都应该改变,有什么帮助吗?

HTML、C和JavaScrpt的混合-我喜欢这些。您知道您很可能多次包含jQuery和脚本吗?实际上,很多时候,正如在“不要创建所有JavaScript内联”中一样,创建一个可重用的函数,该函数可以放入.js文件中,从而缓存并使用类来控制控件的行为。上面的例子可读性不强,效率也不高。@JeffWatkins嗯,根本不可读。我真正感兴趣的是:人们喜欢他们的代码吗?好的,我将从循环中删除脚本。但是我的问题呢?input[name=sr]应该每隔三个同名复选框引用一次,因为每次cnt%3=0时它都会更改。@Hasna766在正确重新设计代码后,问题很可能会消失。将脚本jQuery链接和您重写的脚本放在单独的文件中或结尾,使用HTML元素的属性保存所需信息,并感到高兴。