xSe*_*Sea 0 c# asp.net-mvc jquery razor
最近我创建了这个动态复选框,并在C#MVC Razor视图中显示它们.
<ul>
@for (int i = 0; i < Model.sites.Count; i++)
{
<li>
@Html.CheckBoxFor(m => m.sites[i].IsCheck)
@Html.LabelFor(m => m.sites[i].IsCheck, Model.sites[i].SiteName)
@Html.HiddenFor(m => m.sites[i].SiteId)
@Html.HiddenFor(m => m.sites[i].SiteName)
</li>
for (int j = 0; j < Model.sites[i].Roomz.Count; j++)
{
@Html.CheckBoxFor(m => m.sites[i].Roomz[j].IsCheck)
@Html.LabelFor(m => m.sites[i].Roomz[j].IsCheck, Model.sites[i].Roomz[j].RoomName)
@Html.HiddenFor(m => m.sites[i].Roomz[j].RoomId)
@Html.HiddenFor(m => m.sites[i].Roomz[j].RoomName)
}
}
</ul>
Run Code Online (Sandbox Code Playgroud)
下面的图像是复选框的显示
如何使用jquery检查sites.ischeck以检查相同网站下的所有子项目?示例检查CO2也将检查套件1和2
小智 5
修改html,以便您可以使用相对选择器,包括向复选框添加类名.
<ul>
@for (int i = 0; i < Model.sites.Count; i++)
{
<li>
@Html.CheckBoxFor(m => m.sites[i].IsCheck, new { class = "parent" })
@Html.LabelFor(m => m.sites[i].IsCheck, Model.sites[i].SiteName)
@Html.HiddenFor(m => m.sites[i].SiteId)
@Html.HiddenFor(m => m.sites[i].SiteName)
<div> // suggest you style this to give a margin-left so its indented relative to the parent
for (int j = 0; j < Model.sites[i].Roomz.Count; j++)
{
@Html.CheckBoxFor(m => m.sites[i].Roomz[j].IsCheck, new { class = "child" })
@Html.LabelFor(m => m.sites[i].Roomz[j].IsCheck, Model.sites[i].Roomz[j].RoomName)
@Html.HiddenFor(m => m.sites[i].Roomz[j].RoomId)
@Html.HiddenFor(m => m.sites[i].Roomz[j].RoomName)
}
<div>
</li>
}
</ul>
Run Code Online (Sandbox Code Playgroud)
然后,您可以处理.change()"父"复选框的事件,并在同一<li>元素中获取"子"复选框
$('.parent').click(function() {
var isChecked = $(this).is(':checked');
var children = $(this).closest('li').find('.child');
$.each(children, function(index, item) {
$(this).prop('checked', isChecked);
});
});
Run Code Online (Sandbox Code Playgroud)
您可能还想要处理子复选框,这样如果您取消选中任何子项,父项也将被取消选中,或者如果您检查子项,并且还检查了所有子项,则将检查父项.
$('.child').click(function () {
var parent = $(this).closest('li').find('.parent');
var isChecked = $(this).is(':checked');
if (!isChecked) {
// the parent must be unchecked
parent.prop('checked', false);
} else {
// check if all siblings have the same checked status
var siblings = $(this).siblings('.child');
var total = siblings.length;
var matches = siblings.filter(function () {
return $(this).prop('checked') == isChecked;
}).length;
if (matches === total) {
parent.prop('checked', isChecked);
}
}
})
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
476 次 |
| 最近记录: |