我有一个复选框,我试图通过更改功能查看是否已选中或取消选中。以下代码可能会出现什么问题?
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;
答案 0 :(得分:2)
$(this)
函数使用onCheckChange
而不是id
,this
不可用。在传递事件源对象而不是事件源对象的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');
}
}