Javascript 复选框赢得';t单击即检查使用
我试图在单击容器的跨度时进行复选框检查,但问题是,当我单击跨度时,它会选中/取消选中,但当我单击复选框本身时,它不起作用,知道为什么吗Javascript 复选框赢得';t单击即检查使用,javascript,jquery,html,css,Javascript,Jquery,Html,Css,我试图在单击容器的跨度时进行复选框检查,但问题是,当我单击跨度时,它会选中/取消选中,但当我单击复选框本身时,它不起作用,知道为什么吗 $(“客户日期”)。在('click',函数(e){ e、 预防默认值() e、 停止传播() }); $('.cus_date')。在('单击',函数()上){ 如果($(“#客户日期”)为(“:选中”)){ $(“客户日期”).prop(“选中”,false) }否则{ $(“客户日期”).prop(“选中”,为真) } }); .cus\u日期{ 背景色
$(“客户日期”)。在('click',函数(e){
e、 预防默认值()
e、 停止传播()
});
$('.cus_date')。在('单击',函数()上){
如果($(“#客户日期”)为(“:选中”)){
$(“客户日期”).prop(“选中”,false)
}否则{
$(“客户日期”).prop(“选中”,为真)
}
});代码>
.cus\u日期{
背景色:红色;
显示:块;
宽度:30px;
高度:30px;
}
它不起作用,因为您阻止了默认操作(preventDefault)
停止事件传播就足够了
$(“客户日期”)。在('click',函数(e){
e、 停止传播()
});
$('.cus_date')。在('单击',函数()上){
如果($(“#客户日期”)为(“:选中”)){
$(“客户日期”).prop(“选中”,false)
}否则{
$(“客户日期”).prop(“选中”,为真)
}
});代码>
.cus\u日期{
背景色:红色;
显示:块;
宽度:30px;
高度:30px;
}
您不需要在单击复选框时使用事件.preventDefault()
和事件.stopPropagation
。只需将复选框的id
添加为选择器的一部分:
$('.cus_date,#cus_date')。在('单击',函数()上){
如果($(“#客户日期”)为(“:选中”)){
$(“客户日期”).prop(“选中”,false)
}否则{
$(“客户日期”).prop(“选中”,为真)
}
});代码>
.cus\u日期{
背景色:红色;
显示:块;
宽度:30px;
高度:30px;
}
$(“客户日期”)。在('click',函数(e){
//e、 预防默认值()
e.停止传播()
});
$('.cus_date')。在('单击',函数()上){
如果($(“#客户日期”)为(“:选中”)){
$(“客户日期”).prop(“选中”,false)
}否则{
$(“客户日期”).prop(“选中”,为真)
}
});代码>
.cus\u日期{
背景色:红色;
显示:块;
宽度:30px;
高度:30px;
}
您可以执行以下操作:
$('.cus_date,#cus_date')。在('单击',函数()上){
$('cus#u date').prop('checked',!$('cus#u date').is(':checked');
});代码>
.cus\u日期{
背景色:红色;
显示:块;
宽度:30px;
高度:30px;
}
您阻止jquery代码上的默认操作这个想法是为了阻止默认操作,这样span单击就可以取而代之,但显然我的推理是错误的。谢谢“防止默认值”没有问题,正是e.stopPropagation
停止了向上冒泡的单击事件。如果您只是使用单击事件来更改复选框,那么没有真正的区别(如各种工作答案所示)-但是如果跨度单击做了其他事情,那么这是一个重要的区别。谢谢您,先生:)跨度用于此处未提及的其他用途,这就是我使用它的原因,不过还是要感谢您的建议。@Elshobokshy,这是有效的,因为事件同时附加到span
和复选框中。谢谢!我将把这个标记为回答,因为你们都解决了我的问题,而且你们的代表性比他少。很好的逻辑!:D