选中复选框表jQuery中仅选中一行的复选框
这似乎没什么大不了的,但我还是无法解决问题: 在我的razor视图中,我显示了许多由三列组成的复选框,我想为每行创建一个复选框,每3个复选框检查所有行,下面是我使用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;
<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元素的属性保存所需信息,并感到高兴。