概括一个专门的JQuery函数

时间:2015-07-07 20:34:46

标签: javascript jquery html checkbox

这是关于多个复选框使用JQuery选择/取消选择的问题: http://viralpatel.net/blogs/multiple-checkbox-select-deselect-jquery-tutorial-example/

具有从列表中选择多个项目来处理它们的功能。在线演示位于: http://viralpatel.net/blogs/demo/jquery/multiple-checkbox-select-deselect/jquery-select-multiple-checkbox.html

我已经将演示扩展到包含多个组,并且已经使示例JQuery JavaScript功能适用于一个案例,即BlackBerry案例。工作代码位于http://jsfiddle.net/jLx5z99q/3/

在其中,这是我想要概括的专门功能:

$(function () {
    $("#BlackBerry").click(function () {
        $('.case_blackberry').attr('checked', this.checked);
    });
    $(".case_blackberry").click(function () {
        if ($(".case_blackberry").length == $(".case_blackberry:checked").length) {
            $("#BlackBerry").attr("checked", "checked");
        } else {
            $("#BlackBerry").removeAttr("checked");
        }
    });
});

我想概括它,以便"#BlackBerry"".case_blackberry"是函数的两个参数,因此我可以多次调用它来覆盖其他组。

我不是JavaScript开发人员。请帮忙。

更新:

我已在http://pastie.org/10278464发布了完整的html源代码。

此外,仅供参考,这个完整工作的html源代码由easygen this模板自动生成。这个html测试代码是我编写easygen的原因,使我可以轻松编写任何测试用例,无论我喜欢什么样的方式。希望它也能帮助别人。

由于

3 个答案:

答案 0 :(得分:1)

这可行:

function bindMulti( parent, children ) {
    parent.click(function () {
        children.attr('checked', this.checked);
    });
    children.click(function () {
        if (children.length == children.filter(':checked').length) {
            parent.attr("checked", "checked");
        } else {
            parent.removeAttr("checked");
        }
    });
};

像这样使用:

bindMulti($('#select_all'),$('.children'));
bindMulti($('#BlackBerry'),$('.case_blackberry'));

答案 1 :(得分:1)

您需要定义一些特定的属性。

试试这个小提琴。

boost::bind(&client::handle_resolve, this, boost::asio::placeholders::error, boost::asio::placeholders::iterator, boost::ref(resp))); ^^^^^^^^^^^^^^^^^ http://jsfiddle.net/iboylmz/2acnLzzw/3/

答案 2 :(得分:0)

维护当前的代码逻辑和流程以及元素标识,您可以这样做:

$(function () {
    $(".case_subgroup_all").click(function () {
        $('.case_'+$(this).attr('id').toLowerCase()).attr('checked', this.checked);
    });
    $(".case_blackberry").click(function () {
        if ($(".case_blackberry").length == $(".case_blackberry:checked").length) {
            $("#BlackBerry").attr("checked", "checked");
        } else {
            $("#BlackBerry").removeAttr("checked");
        }
    });

});

我还在{check all'复选框中添加了case_subgroup_all,以便调用您的事件处理程序。

jsfiddle:http://jsfiddle.net/jLx5z99q/5/