我想要一个复选框来检查并取消选中它是否被检查。它正在检查是否未选中 - 但如果选中是,则不会取消选中。很奇怪。提前谢谢!
这是我的代码:
编辑:以下是jsfiddle:http://jsfiddle.net/itamark/UnR4X/
JS:
$(':checkbox').mouseenter(function(){
if($(this).not(':checked')) {
alert('notchecked');
$(this).attr('checked', true);
}
else if($(this).is(':checked')){
alert('ischecked');
$(this).attr('checked', false);
}
})
HTML:
<input type="checkbox" name"myCheck" id="chk1"/>Checkbox</label>
答案 0 :(得分:4)
.is()
和.not()
不一样
.is()
返回true或false,而.not()
删除jQuery元素(如果匹配)。
因此,$(selector).not()
将永远为真,因为定义了jquery。
要检查元素是否存在,请使用.length
。
$(':checkbox').hover(function(){
if($(this).not(':checked').length) {
$(this).prop('checked', true);
}
else if($(this).is(':checked')){
$(this).prop('checked', false);
}
})
小提琴:http://jsfiddle.net/UnR4X/3/
你可以使用1个衬垫:
$(this).prop('checked', !$(this).prop('checked'));
答案 1 :(得分:1)
使用.prop():
$(this).prop('checked', true);
$(this).prop('checked', false);
答案 2 :(得分:1)
我认为触发点击事件会改变复选框的选中状态
$(':checkbox').hover(function() {
$(this).trigger('click');
});
答案 3 :(得分:1)
请注意,您输入的名称参数需要相等。此外,除非您指定悬停和悬停处理程序,否则将悬停错误的事件,否则该函数将继续运行。更容易使用mouseenter处理程序。只有在那种方式开始悬停时才会触发。如果您想在鼠标离开时发生其他事情,您可以指定鼠标距离。或者您可以在悬停功能中指定2个功能。
$(':checkbox').mouseenter(function(){
if($(this).prop('checked')) {
$(this).prop('checked', false);
}
else{
$(this).prop('checked', true);
}
})
答案 4 :(得分:1)
这是工作小提琴, http://jsfiddle.net/UnR4X/11/
$(':checkbox').mouseenter(function(){
if($(this).prop('checked')) {
$(this).prop('checked', false);
$(this).removeAttr('checked');
}
else{
$(this).prop('checked', true);
$(this).attr('checked',true);
}