Javascript 如何使用JQuery选中/取消选中表单中的表中的所有元素

Javascript 如何使用JQuery选中/取消选中表单中的表中的所有元素,javascript,jquery,dom,Javascript,Jquery,Dom,嗨,我正在尝试找出一种方法,按钮改变它的值,并且所有的复选框在点击按钮时被选中/取消选中 我也无法理解如何在DOM中解析。 我在JSFIDLE上尝试了一些东西,但无法实现它。有人能帮我吗 这里是链接 Here is the jQuery code that I have written > $(document).ready(function(){ > $('.check:button').toggle(function(){ > alert('ins

嗨,我正在尝试找出一种方法,按钮改变它的值,并且所有的复选框在点击按钮时被选中/取消选中

我也无法理解如何在DOM中解析。 我在JSFIDLE上尝试了一些东西,但无法实现它。有人能帮我吗

这里是链接

Here is the jQuery code that I have written

> $(document).ready(function(){
>     $('.check:button').toggle(function(){
>         alert('inside toggle function');
>         $('input:checkbox').attr('checked',true);
>         $(this).val('uncheck all')
>     },function(){
>         $('input:checkbox').removeAttr('checked');
>         $(this).val('check all');        
>     }) })

jQuery的
toggle()
功能不久前被弃用并删除,至少是您正在使用的
toggle()
版本

您应该监听
change
事件,并使用
checked
属性使用jQuery的
prop()
切换其他复选框的状态

我使用的是()上的
,这需要比您在you's fiddle中使用的jQuery版本更新的jQuery版本,您应该更新最新版本

编辑: 要使用按钮进行切换,您需要一个标记来跟踪状态,并创建自己的切换

$('#selectAll').on('click', function () {
    var flag = !$(this).data('flag');

    $('#search_data input[type="checkbox"]').prop('checked', flag);

    $(this).data('flag', flag);
});

如果在任何一点上至少有一个未选中的复选框,那么您希望选中全部,否则取消选中全部。当任何单个复选框被更改时,您都希望重新计算

$('#selectAll').on('click', function(){
    var numUnChecked = $(':checkbox:not(:checked)','#search_data').length;
    $(':checkbox', '#search_data').prop('checked',numUnChecked);
    $(this).val( numUnChecked ? 'uncheck all' : 'check all' );
});
$(':checkbox', '#search_data').on('change', function() {
    var numUnChecked = $(':checkbox:not(:checked)','#search_data').length;
    $('#selectAll').val( numUnChecked ? 'check all' : 'uncheck all' );
});

我想用按钮来做。我已经提供了小提琴的链接。你能告诉我哪里出了问题吗?是的,它起作用了,但每次点击都需要更改按钮的值。不过,我会努力找到答案。非常感谢你的帮助。
$('#selectAll').on('click', function(){
    var numUnChecked = $(':checkbox:not(:checked)','#search_data').length;
    $(':checkbox', '#search_data').prop('checked',numUnChecked);
    $(this).val( numUnChecked ? 'uncheck all' : 'check all' );
});
$(':checkbox', '#search_data').on('change', function() {
    var numUnChecked = $(':checkbox:not(:checked)','#search_data').length;
    $('#selectAll').val( numUnChecked ? 'check all' : 'uncheck all' );
});