如何绑定到单击以切换复选框
How to bind to a click to toggle a checkbox?
给定一个LI列表,每个LI都包含一个复选框,如下所示:
<li class="contact">
<input type="checkbox" class="checkbox" name="checkableitems[]" value="1333">
<div class="content">
<cite>Baby James</cite>
</div>
</li>
我希望能够在LI点击时切换复选框,而不仅仅是在复选框点击时。我有这个作品,你可以在这里看到:
http://jsfiddle.net/xgB5X/2/
问题是,当点击LI切换复选框时,直接点击复选框不会被破坏。单击复选框将不再进行切换。有什么建议可以让它发挥作用吗?感谢
为什么不使用label
标记?
<li class="contact">
<input id='input1' type="checkbox" class="checkbox" name="checkableitems[]" value="1333">
<label for='input1'>Baby James</label>
</li>
演示
http://jsfiddle.net/xgB5X/3/检查一下。
我添加了一些代码来阻止传播。这将阻止事件到达li
标记。
$('input[type=checkbox]').on('click', function(e) {
e.stopPropagation();
});
您的问题是,当单击复选框时,它正在更改其状态,但当事件到达li标记时,因为它再次包含复选框,所以它正在更改状态。
几个注意事项:
使用.pr()而不是.attr()(这也更容易判断它的真/假,在所有浏览器中必须相互关联。
您可以在click()中选中e.srcElement作为您的类名复选框。
$('.listview li').on('click', function(e) {
if (e.srcElement.className === 'checkbox') {
e.stopPropagation();
return;
}
checkbox = $(this).find(':checkbox');
// Toggle Checkbox
if (checkbox.prop('checked')) {
checkbox.prop('checked', false);
} else {
checkbox.prop('checked', true);
}
});
jsFiddle
您可以尝试这样的操作jsFiddle
$('.listview li > *').children().bind({
click: function(e) {
checkbox = $(this).closest('li').find('.checkbox');
checkbox.attr('checked', !checkbox.is(':checked'));
}
});
$('.listview li').on('click', function(e) {
var c = $('.checkbox', this);
c.prop('checked', !c[0].checked);
}).find('.checkbox').on('click', function(e) {e.stopPropagation();});
FIDDLE
尽管我认为你应该为此使用标签,但这里是工作的方法
$('.listview li').bind({
click: function(e) {
var checkbox = $(this).find('.checkbox').get(0);
if (e.target == checkbox) return;
checkbox.click();
}
});
FIDDLE
相关文章:
- 如何在单击复选框后调用控制器方法
- 在GridView中,当单击复选框时,在网格的同一行中使用JavaScript将标签中的值添加到TextBox
- 在网页中单击复选框
- 单击复选框时显示日期选择器
- 选择全部单击复选框以及全部拒绝
- 在 Telerik RadGrid 中单击复选框时打开对话框窗口
- 在JS中单击复选框时显示总价
- 单击复选框时重定向
- 如何在单击复选框按钮时制作单选按钮
- 如何使用角度指令控制器动态单击复选框
- 如何通过单击复选框来显示或隐藏网络图表
- 单击复选框时的角度显示一个元素
- 复选框不能通过直接单击复选框来选中或取消选中
- 单击复选框时将此元素添加到收藏夹数组 + 后 Ajax 元素关系
- 单击复选框后未收到复选框事件
- 单击复选框时汇总隐藏字段的值不起作用
- 如何使文本输入框在单击复选框时变为不可写
- 如何在 JSP 中的“单击”复选框时创建删除按钮
- 如何通过单击复选框将文本元素从输入复制到另一个输入
- 单击复选框时如何在 jquery 中创建数组