JS中的事件只适用于foreach中的第一个检查表
Event in JS only works on first checklist inside of a foreach
我有一个函数,它监视复选框列表,以检测是否选中了一些复选框。如果选择了一些,则按钮会显示,否则按钮会隐藏。复选框位于PHP中的foreach中,用于转换为复选框列表。
问题是只有第一个复选框显示删除按钮。
agenda.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
来显示和隐藏内容,因为您正在使用jQuery,所以您可以始终使用$("#id").show()
和$("#id").hide()
。
相关文章:
- 如何使用Javascript在HTML表中查找第一个空行
- 使用jQuery只返回选中复选框后的第一个表单元格值
- Regex模式,用于检查字符串中每个单词的第一个字母(如果是Javascript中的大写字母)
- 如何在不使用multipleparent()调用的情况下找到(元素表的)第一个祖先
- Javascript尽管ID不同,但只有第一个按钮提交给Ajax表单
- 为什么在文本框内按回车键,单击第一个按钮并提交表单
- 在if语句中检查这两个条件,即使第一个条件为false
- 查找表单输入的第一个单词
- 用第一个表单值(HTML、Javascript)填充第二个表单隐藏字段
- 如何循环遍历表行,更改类,并使用"n〃;行数,并知道每行中第一个单元格的值
- 获取HTML表中单击的列中第一个单元格和单击的行中第一个单元的内容
- 添加多个分部视图,第一个缺少表单
- JS中的事件只适用于foreach中的第一个检查表
- 引导工具提示不't在与第一个数据表不同的页面中工作
- jQuery只检查第一个表单
- 检查表单字段的第一个字符是字母
- Head.js只加载IE9及以下版本中的第一个样式表
- 使用jquery添加或删除多个检查表项到另一个列表
- 如何在PHP中存储最后5个检查表单
- 如何使用JQuery获取主体中第一个元素(表单)的id