有没有办法优化以下复选框选择/取消选择代码

时间:2011-05-20 05:04:41

标签: jquery checkbox

我有一张复选框。当我单击带有“全选”文本的div时,它应该选择所有chekbox并且div的文本需要更改为“Unselect all”而不管是否选中任何复选框,反之亦然。反之亦然。

我写了以下内容,它工作正常,有没有更好的方法呢?

   if($(this).text() == "Select All") {
        $(this).text("Unselect All");
        $.each($(".classname"),function(i ,ll){
           $(this).attr('checked', true);
        });
    }else{
        $(this).text("Select All");
        $.each($(".classname"),function(i ,ll){
          $(this).attr('checked', false);
        });
    }

感谢。

2 个答案:

答案 0 :(得分:4)

我假设classname是一个相关复选框的类。你可以尝试:

if($(this).text().trim() == "Select All") {
    $(this).text("Unselect All");
    $(".classname").attr('checked', true);
}else{
    $(this).text("Select All");
    $(".classname").attr('checked', false);
}

答案 1 :(得分:3)

首先,$()是一个函数调用,所以如果你要使用var $this = $(this),你应该说$(this)。此外,您的$.each循环是多余的,因为jQuery对象无论如何都将其更改应用于所有匹配的元素,因此不需要循环(即,基于jQuery方法设置)。您最好删除checked属性,而不是将其设置为false。这样的事情可能会更好:

var $this = $(this);
if($this.text() == 'Select All') {
    $this.text('Unselect All');
    $('.classname').attr('checked', true);
}
else {
    $this.text('Select All');
    $('.classname').removeAttr('checked');
}