为什么在打开模态框时不能马上获取树形选择框的value

现在需要对模态框关闭时判断是否修改,若修改了提示保存
图片说明

function getRoleList() {

        $("input[name='btSelectItem']").each(function (d) {
            if($(this).prop("checked")) {
                console.log($(this).val());
                if($(this).val()!="on") {
                    list2.push($(this).val());
                    console.log(list2.length);
                }
            }
        });
    }
 function unSaveClose() {
        var list = new Array();
        $("input[name='btSelectItem']").each(function (d) {
            if($(this).prop("checked")){
                if($(this).val()!="on"){
                    list.push($(this).val());

                }
            }
        });
        if(list.length!=list2.length)
    //  if(list.length!=0)
            {
            var index = layer.alert('请确认权限,选择关闭',{
                btn: ['关闭',"取消"] //按钮

上面的方法是模态框打开时自动加载,但是却不能循环获取checkbox的值,只能获取到一次on
下面是点击关闭按钮时调用,可以获取所有选中的值
我现在是想先获取刚打开时的已选中框的长度与关闭时的选中框的长度判断是否修改,但是getRoleList() 却获取不了,两个方法都没有其他的调用
求解啊啊,没有分了,请大佬赐教

我感觉首先你的这个判断逻辑会有问题(已选中框的长度与关闭时的选中框的长度判断是否修改)
比如我之前勾选了A,B 我修改了一下,勾选了B,C那两个前后长度是一样的,但是我确实是修改了~

建议在复选框的 change 事件做文章, 判断更准确/即使;
对于你说的不能**马上**获取到UI的值, 我想这中间可能有异步获取服务器数据. 可以在它结束之后再执行那个函数;

如果是我来做, 把这个逻辑分成两个互不相关的两部分:
1. 数据模型, 负责记录/计算当前已经被勾选的数据
2. UI展示, 根据数据模型刷新UI视图
3. 整合, 联动数据和UI