remove()删除后元素没了但其length值仍然存在

  $(".delete-btn").click(function () {
        $(".item").each(function () {
            var $index = $(this).index();
            if($(this).find("i").hasClass("checked")){
                $(this).remove();
                info.splice($index,1);
            }
        },function () {

            console.log($("#person-list").is(":empty"));
            // if($(".item").length == 0){
            //     alert(1)
            // }
            $(".edit").text("编辑");
            $(".add-btn").show();
            $(".delete-btn").hide();

        }())

    })

.item元素被全部删除后,他的父元素还是不为空,这是什么问题?

这是因为去掉的只是元素本身,只是从父级元素中去除了子元素,父级元素没有做任何改变,所以会出现这样的问题。
试着在父级元素上边使用removeChild; eg: 父级元素对象.removeChild(子元素对象);

你的第二个匿名函数先执行了才会执行第一个each回调执行删除,当然不为空了。而且each只有第一个参数当做回调,传递多个没意义