如何使用 jquery 检查动态复选框

How can I check dynamic checkboxes with jquery

我正在尝试找到检查更改事件复选框的最简单方法。

我使用 php 脚本创建了复选框

PHP:

<div class="form-group">
    <div class="col-md-12 servicesCheck" style="margin-top:-10px">
        <?php
        foreach ($data["languageSchool"]["services"] as $service) {
            $required = "";
            $checked = "";
            if ($service["is_required"] == "1") {
                $required = "disabled";
                $checked = "checked";
            }
            echo "<div class='checkbox " . $required . "'>";
            echo "  <label><input id='services' type='checkbox' " . $checked . " " . $required . " value='" . $service["price"] . "'>" . $service["name"] . "</label>";
            echo "</div>";
        }
        ?> 
    </div> 
</div>

JQUERY:

$('#servicesCheck :checkbox').change(function () {
    // DO SOMETHING
});

我的代码哪里做错了。

我认为 jQuery 选择器是错误的。 'servicesCheck' 在你的 HTML 中是 Class 而不是 Id,

$('.servicesCheck input:checkbox').change(function () {
// DO SOMETHING
});

应该可以。

尽管 :checkbox 有效 ​​jQuery documentation 说:"it is recommended to precede it with a tag name or some other selector"

您的 php 代码将生成多个具有相同 ID 的复选框。通过添加一个自动递增后缀来改变它..而且你在jQuery代码中使用了#servicesCheck,这在这个代码

中不可用

就我个人而言,我发现通过名称属性专门定位更容易,因为它必须存在于源代码中,因为多个复选框可能需要不同的处理而不是相同的处理。

如果您只有 1 个, 个答案就足够了。

$('#myloginform input[name=mycheckboxname]:checked').change(function(){
  console.log($(this).attr('name'));
});