Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/420.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 复选框赢得';t单击即检查使用_Javascript_Jquery_Html_Css - Fatal编程技术网

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