【问题标题】:Optimizing jquery checkbox script优化 jquery 复选框脚本
【发布时间】:2010-08-04 23:24:33
【问题描述】:

我正在努力提高使用 Jquery 的能力,因此希望得到有关以下优化我的脚本的方法的反馈。

为了简要描述功能,我有一个“checkall”复选框和一个用于对选中元素执行操作的按钮。如果没有检查任何元素,我的按钮应该被禁用并且类也被禁用。如果只检查了一个元素,则不应禁用该按钮,也不应禁用该类。

提前致谢

$(document).ready(function(){

$('#checkall').click(function () {
    $(this).parents('.table_form:eq(0)').find(':checkbox').attr('checked', this.checked);

    if($(this).parents('.table_form:eq(0)').find(':checkbox').is(':checked')) {
        $("#delete_selected").attr("disabled");
        $("#delete_selected").removeClass("disabled");
    } else {
        $("#delete_selected").removeAttr("disabled").addClass("disabled");
    }
});

$("#blog_posts tbody :checkbox").click(checked_status);

});

function checked_status() {
    var n = $("input:checked").length;

    if(n > 0) {
        $("#delete_selected").attr("disabled");
        $("#delete_selected").removeClass("disabled");
    } else {
        $("#delete_selected").removeAttr("disabled").addClass("disabled");
    }
}

【问题讨论】:

    标签: jquery checkbox


    【解决方案1】:

    关于优化这里我没有太多要说的,但大概你正在尝试将其设置为禁用:

    $("#delete_selected").attr("disabled"); // won't work, simply returns true or false
    

    应该是:

    $("#delete_selected").attr("disabled", true); // or "disabled"
    

    你可以使用链接:

    $("#delete_selected").attr("disabled", true)
                         .removeClass("disabled");
    

    http://api.jquery.com/attr/

    另外,这个条件:

    if($(this).parents('.table_form:eq(0)').find(':checkbox').is(':checked')) {
    

    可以改成稍微简洁一点的:

    if($(this).closest('.table_form').find(':checkbox:checked').length) {
    

    但这确实是一种偏好。

    【讨论】:

    • 是的,我自己刚刚发现了这个错误。感谢您指出!代码现在是这样的: $("#delete_selected").attr("disabled", false); $("#delete_selected").removeClass("disabled");
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-16
    • 2018-10-10
    • 2020-04-12
    • 1970-01-01
    相关资源
    最近更新 更多