zoukankan      html  css  js  c++  java
  • Jquery 中each循环嵌套的使用示例教程

    1、从MVC返回的Json数据如下:

    2、下面是客户端实现的示例:

    $.post("/admin/GetPermissionsForRole", function (data,status) {
    if (status == "success") {
        var ghtml = "";
        $.each(data, function (i, items) { //items相当于二维数组里的每一个一维数组
            if (items["ParentPermissionId"] == "")
            {
                ghtml += "<div class='panel panel-transparent'> <ul class='list-group'>";
                ghtml += "<div class='panel-heading'><i class='fa fa-list-ul'></i>&nbsp;<span class='panel-title text-bold'>" + items["PermissionName"] + "</span></div>";
                ghtml += "<ul class='list-group'>";
                $.each(data, function (i, sitems) {
                    if (sitems["ParentPermissionId"] == items["PermissionId"])
                    {
                        ghtml += "<li class='list-group-item'>";
                        ghtml += "<h6 class='text-bold text-semibold text-xs' style='margin:20px 0 10px 0'>";
                        ghtml += "<label class='px-single'><input type='checkbox' class='px'><span class='lbl'>&nbsp;</span></label>&nbsp;&nbsp;" + sitems["PermissionName"];
                        ghtml += "</h6>";
                        ghtml += "<p>";
                        $.each(data, function (i, ssitems)
                        {
                         if (ssitems["ParentPermissionId"] == sitems["PermissionId"])
                         {
                           ghtml += "<label class='checkbox'><input type='checkbox' class='px' /><span class='lbl'>" + ssitems["PermissionName"]+ "</span></label>";
                         }                                        
                        })
                        ghtml += "</p>";
                        ghtml += "</li>";
                    }
                                    
                })
                ghtml += "</ul></div>";
            }
        });                    
        $("#premlist").html(ghtml);                   
    }
    })

    3、最后要实现的效果如下:

    //权限"全选或者取消"功能代码,此代码必须要放在append()的后面,不然不起作用
    var xsChk = 'px';//定义的样式
    var xsChkAll = "input[type='checkbox'][class='" + xsChk + "'][name]";//所有定义此样式的checkbox
    $(xsChkAll).each(function () {
        var name = $(this).attr("name");
        name = "input[type='checkbox'][class!='" + xsChk + "'][name='" + name + "']";//此全选框下面的子checkbox
        $(this).on('click', function () {
            $(name).attr("checked", $(this)[0].checked);
        })
        var xschk = $(this);
        $(name).on('click', function () {
            var IAll = $(name).length; //此子项目下所有checkbox的个数
            var IChk = $(name + ":checked").length; //此子项目下所有勾选checkbox的个数
            var isAllChecked = true; //是否是全选
            if (IAll != IChk) {
                isAllChecked = false;
            }
            $(xschk).attr("checked", isAllChecked);
        });
    });
    //会选或者取消功能结束
  • 相关阅读:
    [BZOJ4876][ZJOI2017]线段树
    [FJOI2016]建筑师(斯特林数)
    WC2018伪题解
    [BZOJ3514]CodeChef MARCH14 GERALD07加强版(LCT+主席树)
    [BZOJ2594][WC2006]水管局长加强版(LCT+Kruskal)
    [洛谷3796]【模板】AC自动机(加强版)
    [洛谷3808]【模板】AC自动机(简单版)
    [BZOJ3261]最大异或和
    [BZOJ3439]Kpm的MC密码
    [POI2006]Periods of Words
  • 原文地址:https://www.cnblogs.com/firstcsharp/p/4208956.html
Copyright © 2011-2022 走看看