繁体   English   中英

JS中的事件仅适用于foreach内部的第一个清单

[英]Event in JS only works on first checklist inside of a foreach

我有一个监视复选框列表的功能,以检测是否选中了某些复选框。 如果选择了某些按钮,则显示按钮,否则按钮隐藏。 该复选框位于PHP的foreach中,可转换为复选框列表。

问题在于,只有第一个复选框显示删除按钮。

schedule.php:

<tbody>
    <form id="delTask" name="delTask" method="POST" action="">
        <?php foreach ($tasks as $value): ?>
            <tr>
                <td>
                    <div class="checkbox">
                        <label>
                            <input name="excluir[]" value="<?php echo $value[0] ?>" id="taskSelect" type="checkbox">
                        </label>
                    </div>
                </td>
                <td><?php echo $value[1] ?></td>
                <td><span class="label label-success">+50</span></td>
            </tr>
        <?php endforeach; ?>
    </form>
</tbody>

app.js:

// Hide/Show button of del
$("#taskSelect").click(function () {
    if( $("#taskSelect").is(':checked') ) {
        $("#writeTask").hide();
        document.getElementById("deleteTask").style.display = 'block';
    } else {
        $("#writeTask").show();
        document.getElementById("deleteTask").style.display = 'none';
    };
});

问题是您有许多带有ID taskSelect复选框输入。 元素ID在整个文档中必须唯一。 相反,您将要使用一个类名,因为同一类可以附加到多个元素:

<input name="excluir[]" value="<?php echo $value[0] ?>" class="taskSelect" type="checkbox">

然后,您在jQuery点击处理程序中使用.classname类的选择器,而不是#id

$(".taskSelect").click(function () {
    ...
});

document.getElementById("id").style.display ,与其使用document.getElementById("id").style.display来显示和隐藏事物,不如使用jQuery,您可以只使用$("#id").show()$("#id").hide()始终。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM