jQuery复选框检查并取消选中不工作

时间:2014-04-05 00:03:36

标签: jquery checkbox

我有一个复选框,我试图通过更改功能查看是否已选中或取消选中。以下代码可能会出现什么问题?



function onCheckChange(id){
  if ($(this).is(":checked")) {
    alert('checked');
  } else {
    alert('unchecked');
  }
}

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type=checkbox id='chk' onchange='onCheckChange(this)'>
&#13;
&#13;
&#13;

2 个答案:

答案 0 :(得分:2)

$(this)函数使用onCheckChange而不是idthis不可用。在传递事件源对象而不是事件源对象的onCheckChange时,可能需要更改参数id的名称。

您可以使用$()转换传递给DOM对象的jQuery对象,以便在其上调用is()

function onCheckChange(sourceObj){
    if ($(sourceObj).is(":checked")) {
        alert('checked');
    }
    else {
        alert('unchecked');
    }
}

答案 1 :(得分:2)

处理程序内的

this不会引用复选框。由于您将this传递给onchange处理程序中的方法,因此它引用了dom元素,因此您可以使用它来引用已更改的元素,如

<input type=checkbox id='chk' onchange='onCheckChange(this)'>

然后

function onCheckChange(el){
    if ($(el).is(":checked")) {//or just el.checked
        alert('checked');
    }
    else {
        alert('unchecked');
    }
}