javascript - 全部勾选触发点击或改变参数

标签 javascript jquery html css checkbox

我一直在测试和研究这段代码,关于“全选”复选框。 虽然我知道如果以编程方式选中复选框, 首先调用点击处理程序,然后更改复选框状态,我需要使用更改处理程序。

我一直在使用的代码利用点击处理程序中的参数。

更改处理程序也可以使用参数吗?

下面是代码,当前通过点击处理程序传递参数。
我试过将 .click 更改为 .change,但没有效果。
在测试中,每个单独的复选框都会触发使 div 出现的功能,但“check_all”复选框不会触发它。

也可用作 fiddle .

在此感谢您的帮助。

CSS:

.toBeCompared_k {
        display: block;
}
.toBeCompared_s {
        display: block;
}
.toBeCompared_a {
        display: block;
}

.toBeCompared_new_k {
        display:inline-block;
        background:red;
        border: 1px solid black;
        margin: 2px;
        float: left;
}
.toBeCompared_new_s {
        display: inline - block;
        background: blue;
        border: 1px solid black;
        margin: 2px;
        float: left;
}
.toBeCompared_new_a {
        display: inline - block;
        background: yellow;
        border:1px solid black;
        margin:2px;
        float:left;
}

JavaScript:

$(function () {
    $("#check_all").change(function () {
        $('input:checkbox').prop('checked', this.checked);
    });
});
$(document).ready(function dynamic_boxes() {
    $(".ksa_check_k").click({
        param1: "k",
        param2: "World"
    }, cool_function);
    $(".ksa_check_s").click({
        param1: "s",
        param2: "World"
    }, cool_function);
    $(".ksa_check_a").click({
        param1: "a",
        param2: "World"
    }, cool_function);

    function cool_function(event) {
        var ksa_section = event.data.param1
        var title = $(this).closest('.ksa_check_group').find('.ksa_check_' + ksa_section).attr("id")
        //e.g. above returns ksa_on_1k1_1
        var title_partial = title.substring(nth_occurrence(title, '_', 2) + 1, nth_occurrence(title, '_', 3))
        //e.g. above returns 1k1
        if ($(this).prop('checked')) {
            var html = '<div id="' + title_partial + '"class="toBeCompared_new_' + ksa_section + '">' + title_partial + '</div>';
            $('div.toBeCompared_' + ksa_section).append(html);
            $('div.toBeCompared_' + ksa_section).show();
        } else {
            $('div[id="' + title_partial + '"]').remove();
        }
    }
});

function nth_occurrence(string, char, nth) {
    var first_index = string.indexOf(char);
    var length_up_to_first_index = first_index + 1;
    if (nth == 1) {
        return first_index;
    } else {
        var string_after_first_occurrence = string.slice(length_up_to_first_index);
        var next_occurrence = nth_occurrence(string_after_first_occurrence, char, nth - 1);
        if (next_occurrence === -1) {
            return -1;
        } else {
            return length_up_to_first_index + next_occurrence;
        }
    }
}

HTML:

<input type="checkbox" name="check_all" id="check_all">
<div class="ksa_check_group">
    <span>1k1</span><input id="ksa_on_1k1_1" class="ksa_check_k" type="checkbox" value="1" name="ksa_on_1k1_1">
</div>
<div class="ksa_check_group">
<span>1s1</span><input id="ksa_on_1s1_1" class="ksa_check_s" type="checkbox" value="1" name="ksa_on_1k1_1">
</div>
<div class="ksa_check_group">
<span>1a1</span><input id="ksa_on_1a1_1" class="ksa_check_a" type="checkbox" value="1" name="ksa_on_1k1_1">
</div>

<div class="toBeCompared_k"></div>
<div class="toBeCompared_s"></div>
<div class="toBeCompared_a"></div>

最佳答案

您需要在复选框上触发触发器

  $('*[class^="toBeCompared_new_"]').hide();
  $('*[class^="ksa_check_"]').trigger("change");

Fiddle update

关于javascript - 全部勾选触发点击或改变参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23158727/

相关文章:

javascript - 在同一页面打开 HTML 表单

javascript - 为什么 9999999999999999 在 JavaScript 中转换为 10000000000000000?

javascript - 基于选项选择使用 jquery 隐藏元素

jquery - 使用 jQuery 选择不包含指定类的元素?

jquery - 与右侧对齐时,Bootstrap 工具提示不正确显示

javascript - 如何在我复制到另一个表的行的开头放置删除按钮

javascript 函数不执行,仅在控制台中有效

javascript - Kendo Scheduler - isDaySlot 错误

javascript - Knockout Kendo Grid 数据绑定(bind)事件

javascript - 如何在JQuery中解除点击和点击提交按钮的绑定(bind)?