【问题标题】:Check box with jQuery带有 jQ​​uery 的复选框
【发布时间】:2013-04-20 12:41:51
【问题描述】:

这里是 jsfiddle http://jsfiddle.net/6mk7m/9/

我在 stackoverflow 上发现我需要创建 jsfiddle 帐户,这样我就可以向你们展示代码以便于阅读,(抱歉)如果我的英语不太好,

我目前正在学习jQuery,我不是专家,只是一个“初学者”,无论如何,

我做了一个复选框,我给了它一个 id = all

<input type="checkbox" id="all" /><span style='color:red'>All</span>

我想要的是,当我点击这个带有这个特定 id = all 的复选框时,我想选中下面列出的这 3 个复选框

<input type="checkbox" name="us[]" value="google" />Google
<input type="checkbox" name="us[]" value="youtube" />Youtube
<input type="checkbox" name="us[]" value="friend" />Friend<br/><br/>

所以这是我想出来的代码,

<script type="text/javascript">

$("document").ready(function() {


    $("input[id='all']").bind('click',function(){

        var all = $(this);

        console.log('status: ' + all.prop('checked'));


        if(all.prop('checked') == true)
        {
            //alert('now its true');
            $("input:checkbox").attr("checked","checked");
        }
        else if (all.prop('checked') == false){
            $("input:checkbox").removeAttr("checked");
        }

    })
})  
 </script>

当我点击 id = all 的复选框时(它会选择所有复选框

现在当我第二次点击 id = all 的复选框时(它未选中所有复选框

到现在为止,一切都很好

现在问题是当我第三次点击 id = all 的复选框时

( 它不检查任何复选框 ) 但是,当我检查控制台时,我看到所有属性都等于已选中 - 但我没有看到它们在浏览器上选中的复选框我的意思是它们在中间没有这个 tick 标记的复选框每个盒子, 可能代码有问题,我就是想不通为什么当我想点击超过 3 次时它不起作用。

【问题讨论】:

  • 不要使用attr,使用prop。要检查,请致电$('input:checkbox').prop('checked', true);,要取消检查,请将true 更改为false
  • 更正了你的 jsFiddle;你忘了在外部资源中包含 jQuery。
  • 谢谢安东,我会试试的...
  • @user2237771,我更正了我的评论。对不起,我第一次错了。
  • 安东我刚刚做了同样的事情,

标签: jquery


【解决方案1】:
$(document).ready(function() {
    $('#selecctall').click(function(event) {  //on click 
        if(this.checked) { // check select status
            $('.checkbox1').each(function() { //loop through each checkbox
                this.checked = true;  //select all checkboxes with class "checkbox1"               
            });
        } else {
            $('.checkbox1').each(function() { //loop through each checkbox
                this.checked = false; //deselect all checkboxes with class "checkbox1"                       
            });         
        }
    });
});

【讨论】:

  • 欢迎来到 SO!如果您在代码中添加一些解释,尤其是其中使用的关键内容以及它们如何帮助解决问题,那就太好了。
【解决方案2】:

这是一个具有正确行为的 jsFiddle。在 jQuery 的最新版本中,命令 prop() 应该用于更改元素的属性(而不是属性)。

http://jsfiddle.net/6mk7m/10/

请看下面的代码:

    if(all.prop('checked') == true)
    {
        //alert('now its true');
        $("input:checkbox").prop("checked",true);
    }
    else if (all.prop('checked') == false){
        $("input:checkbox").prop("checked",false);
    }

【讨论】:

【解决方案3】:
$('#all').on('click', function(){
    $('input:checkbox[name="us[]"]').prop('checked', this.checked);
});

【讨论】:

    【解决方案4】:

    试试这个方法-

    Working Fiddle

    $("input[id='all']").bind('click',function(){
            var all = $(this);
            console.log('status: ' + all.prop('checked'));
            if(all.is(':checked')){
                //alert('now its true');
                $("input:checkbox[name^='us']").prop("checked",true);
            }
            else{
                $("input:checkbox[name^='us']").prop("checked",false);
            }
    });
    

    【讨论】:

    • 是的,我看到了 mohammed ,但在我的 Firefox 浏览器上它不起作用,但控制台显示属性的值已选中
    • 感谢 Mohammed 的帮助,但是在您解决之前还有其他人,所以我不得不标记他的答案,正确的答案,我非常感谢您的帮助,再次感谢您。 ....
    【解决方案5】:

    为什么不让它变得超级简单:

    $('#all').on("change",function(){
        $('input:checkbox').not('#all').each(function(a,b){
               var _checked=$('#all').is(":checked");
              $(b).prop('checked',_checked)
            });
    });
    

    看到这个fiddle

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-07-11
      • 1970-01-01
      • 2013-09-01
      • 1970-01-01
      • 2014-06-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多