Discuss / JavaScript / 作业

作业

Topic source

XNOKIA

#1 Created at ... [Delete] [Delete and Lock User]
// 全选
selectAll.click(function(){
    var checked = $(this).prop("checked");
    if(checked){
        langs.each(function(){
            $(this).prop("checked",true);
            selectAllLabel.hide();
            deselectAllLabel.show();
        });
    } else {
        langs.each(function(){
            $(this).prop("checked",false);
            selectAllLabel.show();
            deselectAllLabel.hide();
        });
    }
});

//每个checkbox检查change事件
//如果选中则检查是否要选中全选
//如果非选中,则要检测是否要取消全选
langs.change(function(){
    var checked = $(this).prop("checked");
    var allChecked = selectAll.prop("checked");

    if(checked){
        var flag = true;
        for(let i=0;i<langs.length;i++){
            if(!langs.get(i).checked){flag = false;break;}
        }
        if(flag){
            selectAll.prop("checked",true);
            selectAllLabel.hide();
            deselectAllLabel.show();            
        }
    } else {
        if(allChecked){
            selectAll.prop("checked",false);
            selectAllLabel.show();
            deselectAllLabel.hide();
        }
    }
});

//绑定反选事件
//通过一个selectCount来统计反选后有多少个选中,
//如果全部选中则修改 全选为全不选,并选中
//如果非全部选中则修改 为全选,取消选中
invertSelect.click(function(){
    var selectCount = 0;
    for(let i=0;i<langs.length;i++){
        langs.get(i).checked = !langs.get(i).checked;
        if(langs.get(i).checked) selectCount++;
    }

    if(selectCount==langs.length){
            selectAll.prop("checked",true);
            selectAllLabel.hide();
            deselectAllLabel.show();
    } else {
         selectAll.prop("checked",false);
         selectAllLabel.show();
         deselectAllLabel.hide();
    }
    return false;
});

  • 1

Reply