如何检查点击时是否选中了复选框?

时间:2011-07-29 16:27:48

标签: javascript jquery

当我单击复选框时,如果选中了复选框,我需要触发一些代码。 但由于某些原因,.is(':checked')总是被触发。

这是我的代码。

  jQuery('#selectlist input[type=checkbox]').live('click',function(){
    var select_id = jQuery(this).attr('id');

    if(jQuery(this).is(':checked')) {
      alert('You have unchecked the checkbox');
      // Remove some data from variable
    } else {
      alert('You have checked the checkbox');
      //Add data to variable
    }
  }

更新
我在JSFiddle上添加了一个示例:http://jsfiddle.net/HgQUS/

7 个答案:

答案 0 :(得分:2)

使用change代替click

答案 1 :(得分:1)

$(this).val();

$(this).prop('checked'); # on jquery >= 1.6

你会更善于搜索SO:

答案 2 :(得分:1)

this.checked

应该告诉你是否选中了复选框,虽然这只是javascript,所以你将无法在'jquery'元素上调用它。例如 -

<input type="checkbox" id="checky">
$("#checky")[0].checked

答案 3 :(得分:1)

如果输入具有checked属性,则显然已选中,如果未选中则将其删除。

if ($(this).attr("checked")) {
    // return true
}
else {
    // return false
}

但是,您可以调整上面的代码来检查属性是否未被删除,而是设置为true / false,如下所示:

if ($(this).attr("checked") == "true") {
    // return true
}
else {
    // return false
}

此外,我看到你使用jQuery作为选择器的运算符,你可以使用美元$符号,因为这是一个捷径。

答案 4 :(得分:1)

我翻了警报,它对我有用:

<script type="text/javascript">
  jQuery('#selectlist input[type=checkbox]').live('click',function(){
    var select_id = jQuery(this).attr('id');

    if(jQuery(this).is(':checked')) {
            alert('You have checked the checkbox');
      // Remove some data from variable
    } else {
            alert('You have unchecked the checkbox');
      //Add data to variable
    }
  });

</script>

答案 5 :(得分:0)

您的“if”语法不正确。

jQuery('#selectlist_categories input[type=checkbox]').live('click',function(){
    var cat_id = jQuery(this).attr('id');

    // if the checkbox is not checked then alert "You have unchecked the checkbox"
    if(!jQuery(this).is(':checked')) {
      alert('You have unchecked the checkbox');
    } else {
      //else alert "You have checked the checkbox"
      alert('You have checked the checkbox');
    }
  });

答案 6 :(得分:0)

如果您在检查它时为何说unchecked感到困惑。您的代码没有什么 错误 ,您可以在以下警报中将uncheckedchecked彼此切换:

$('#selectlist_categories input[type=checkbox]').on('change',function(){
     var cat_id = $(this).attr('id');
     let cat_idText = $("input[type=checkbox]:checked").val();
    
     if(jQuery(this).is(':checked')) {
       alert('You have checked the checkbox' + " " + `${cat_idText}`); 
     } else {
       alert('You have unchecked the checkbox'); 
     }
}); 

PS:我更新了脚本,使其可以在 jQuery 3.5.1 中使用,而带有live()的原始脚本仅在 jQuery 1.7 上有效,因为该脚本已在 1.9 代替使用on(),在 jQuery 3.5.1 上,您可以使用$代替jQuery和{{3} }函数适用于所有版本,因为它是在 jQuery 1.0

中添加的

或者以一种更好的方式将if语句更正为 RickyCheers ,即在!jQuery之前添加$然后if语句会将其变成如果未选中jQuery Element

$('#selectlist_categories input[type=checkbox]').on('click',function(){
     var cat_id = $(this).attr('id');
    
     if(!jQuery(this).is(':checked')) {
       alert('You have unchecked the checkbox');
     } else {
       alert('You have checked the checkbox');
     }
});