Discuss / JavaScript / 代码

代码

Topic source
$(function(){
    selectAll.change(function(){
        if($(this).prop('checked')){
            langs.prop('checked',true);
            selectAllLabel.hide();
            deselectAllLabel.show();
        }else{
            langs.attr('checked',false);
            selectAllLabel.show();
            deselectAllLabel.hide();
        }
    });//全选点击与否的状态。

    invertSelect.click(function(e){
        langs.map(function(){
            if($(this).is(':checked')) 
                $(this).prop('checked',false);
            else 
            $(this).prop('checked',true);
        });
        e.preventDefault();
    });//点击反选。

    langs.click(function(){
        if(!$(this).is(':checked')){
            selectAll.prop('checked',true);
            selectAllLabel.show();
            deselectAllLabel.hide();
        }
        else if(langs.filter(':not(:checked)').length == 0){
            selectAll.prop('checked',true);
            selectAllLabel.hide();
            deselectAllLabel.show();
        }//查看是否全部选中,自动变为全选状态。
    });

});

孙榕Sun

#2 Created at ... [Delete] [Delete and Lock User]

为什么得$(this).直接this为什么不行?

韩背厶

#3 Created at ... [Delete] [Delete and Lock User]

this 是 DOM对象 没有prop() 方法,

通过$(this)转化红尘jquery对象就可以使用prop()方法.

这个代码有问题,如果先全选,再点反选就会发现,不过我还没想到错误在哪里。

langs.click(function(){ if(!$(this).is(':checked')){ selectAll.prop('checked',true); selectAllLabel.show(); deselectAllLabel.hide(); }

应该是这个代码里的if判断的逻辑是错误的。 举个例子:判断条件表示当前当前点击的checkbox的checked值为false时(等价于取消这个选项时),判断条件为真,“全选”项打钩; 应该是需要判断langs的对象中所有的元素。

langs.click(function(){ if(!$(this).is(':checked')){ selectAll.prop('checked',true); selectAllLabel.show(); deselectAllLabel.hide(); }

这一块
selectAll.prop('checked',false);
逻辑就正确了吧?

  • 1

Reply