jQuery点击td切换复选框
jQuery click on td to toggle checkbox
正如标题所示,我希望能够点击表格td或复选框本身来打开或关闭复选框。下面的解决方案在点击td时有效,但由于某些原因,当你点击复选框时什么都不会发生。有什么关于这里发生了什么的想法吗?
$('td').click(function (e) {
// Toggle checkbox
$('input:checkbox', this).prop('checked', function (i, value) {
return !value;
});
});
谢谢!
http://jsfiddle.net/Littlebob/56CnR/
这是因为<input>
复选框位于<td>
内部,并且您已将点击事件附加到<td>
为了克服这个问题,检查目标类型,如果它不是输入复选框,你需要处理它。
演示
$('td').click(function (event) {
if (!$(event.target).is('input')) {
$('input:checkbox', this).prop('checked', function (i, value) {
return !value;
});
}
});
参考
事件.target
jQuery.is((
我不知道你的代码的上下文,但你真的不需要任何jQuery/JavaScript。这可以简单地通过添加标签元素来完成:
HTML
<table>
<tr>
<td>
<label><input type="checkbox" name="something" value="0"/></label>
</td>
</tr>
</table>
CSS
td {
background-color: #eee;
}
label {
padding: 20px;
cursor: pointer;
display: block;
}
请参阅演示
$(document).ready(function () {
$(document).on('click', 'tbody td', function (e) {
e.stopPropagation();
var checked= $(this).find('input[type="checkbox"]');
checked.prop('checked', !checked.is(':checked'));
$(this).toggleClass('selected'); // or anything else for highlighting purpose
});
$(document).on('click', 'input[type="checkbox"]', function (e) {
e.stopPropagation();
$(this).parent().toggleClass('selected'); // or anything else for highlighting purpose
});
});
检查此JSFiddle
相关文章:
- 如何在angularJS中编辑时,如果DB中的值为true,则设置复选框,如果值为false,则取消选中复选框
- 正在验证8个真/假复选框或复选框中的2个
- 为复选框javascript指定两个值
- 如何在单击复选框后调用控制器方法
- 从复选框和Selects-KnockoutJS中获取值的总和
- 选中多个具有相同名称的复选框
- 在表中搜索相同的日期,并在td中添加复选框
- KNOCKOUTJS 复选框,然后单击父 TD
- 检查是否使用 jQuery 选中复选框,然后将类添加到最近的 TD
- 单击复选框时获取下一个TD的内容
- 防止点击复选框时触发TD点击
- 对于表中的每个复选框,如果选中了复选框,则将class应用于td标记,
- 检查是否使用jquery在td中选中了特定的复选框
- COLDFUSION:为表循环中的td(行)选择一个复选框
- jQuery点击td切换复选框
- 如何在动态创建的下一个td文本框中获得选中的具有相同值的复选框的计数
- Jquery之前选中td中的复选框
- 如果复选框处于启用状态,请选择td元素
- 如果选中复选框,如何逐行获取td值
- jQuery -当选择复选框输入或td时停止传播