jquery - 通过脚本取消选中全部与通过鼠标单击取消选中

标签 jquery

我有一个脚本,其中表中的每一列都有一个复选框,如果选中该复选框,则该列将被隐藏。如果我用鼠标选中该框,则效果很好。但是,我正在尝试实现检查/取消选中所有脚本,虽然这似乎做了它应该做的事情,即在浏览器中我可以看到所有列复选框都被选中和取消选中,但列不会被隐藏。只有当我手动取消选中每个框时,它们才会隐藏。

这是负责隐藏列的代码

$('input:checkbox').change(function(){
   var ColToHide = $(this).attr("name");    
    if(this.checked){
        $("td[class='" + ColToHide + "']").show();        
    }else{
        $("td[class='" + ColToHide + "']").hide();
    }

    $('div#Debug').text("hiding " + ColToHide);
});

这是选中/取消选中所有脚本

html

<p><label><input type="checkbox" id="checkAll"/> Check all</label></p>

jquery

$("#checkAll").change(function () {
    $("input:checkbox").prop('checked', $(this).prop("checked"));
});

最佳答案

当您以编程方式设置checked 状态时,不会触发change 事件。要解决此问题,您可以手动引发事件,如下所示:

$("#checkAll").change(function () {
    $("input:checkbox").prop('checked', $(this).prop("checked")).change();
});

另请注意,您可以使用 toggle 来缩短 change() 处理程序中的逻辑:

$('input:checkbox').change(function() {
    $("td[class='" + this.name + "']").toggle(this.checked);
}); 

关于jquery - 通过脚本取消选中全部与通过鼠标单击取消选中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34290231/

相关文章:

java - 当 session 过期时使用 AJAX 导航到登录页面

javascript - 在 datePicker 中禁用单元格并更改它们的颜色

jquery - 我还是不明白 'closest()'...请澄清

javascript - 用于 ajax POST JSON 回显的 jsfiddle

jquery - 在 Firefox 中,如何强制光标停留在最后输入的字符上?

javascript - 窗口调整大小不起作用

javascript - jQuery 和带有 webpack 的插件 (SignalR)

javascript - jQuery serialize() 方法与 JSON.stringify() 有什么区别?

javascript - 使用 jQuery.on() 将事件附加到空数组

jquery - 如何替换字符串的最后一行