使用Jquery检查和取消选中复选框

时间:2013-08-02 20:43:28

标签: javascript jquery

我想要一个复选框来检查并取消选中它是否被检查。它正在检查是否未选中 - 但如果选中是,则不会取消选中。很奇怪。提前谢谢!

这是我的代码:

编辑:以下是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>

5 个答案:

答案 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)

Working Fiddle

请注意,您输入的名称参数需要相等。此外,除非您指定悬停和悬停处理程序,否则将悬停错误的事件,否则该函数将继续运行。更容易使用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);
        }