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

发布于 2024-11-09 02:51:47 字数 492 浏览 0 评论 0原文

我有一张复选框表。当我单击带有文本“全选”的 div 时,它应该选择所有复选框,并且无论是否选中任何复选框,div 的文本都需要更改为“取消全选”,反之亦然。

我写了以下内容,效果很好,请问还有更好的方法吗?

   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);
        });
    }

谢谢。

I have a table of checkboxes. When I click a div with text "Select All" it should select all chekboxes and the div's text needs to change to "Unselect all" irrespective of any check box is checked or not and vice versa.

I have written the following, it's working fine, is there any better way to do it?

   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);
        });
    }

thanks.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

深海蓝天 2024-11-16 02:51:47

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

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

I'm assuming classname is a class of the concerned checkboxes. You can try:

if($(this).text().trim() == "Select All") {
    $(this).text("Unselect All");
    $(".classname").attr('checked', true);
}else{
    $(this).text("Select All");
    $(".classname").attr('checked', false);
}
狼性发作 2024-11-16 02:51:47

首先, $() 是一个函数调用,因此如果您要使用 $(这个) 很多。另外,您的 $.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');
}

First of all, $() is a function call so you should say var $this = $(this) if you're going to be using $(this) a lot. Also, your $.each loops are redundant as the jQuery objects apply their changes to all the matched elements anyway so looping is not needed (i.e. the jQuery methods are set based). You're probably better off removing the checked attribute rather than setting it to false too. Something like this would probably be better:

var $this = $(this);
if($this.text() == 'Select All') {
    $this.text('Unselect All');
    $('.classname').attr('checked', true);
}
else {
    $this.text('Select All');
    $('.classname').removeAttr('checked');
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文