jQuery:检查复选框是否已选中

时间:2011-12-23 01:24:50

标签: jquery

我有一个html页面,其中我有多个“复选框”,每个复选框都调用一个函数onclick。

像这样的东西

onclick="manage(val1, val2)

在我的功能中,当我获得复选框的检查状态时,每次都给出错误。

function manage(val1, val2) {
    **if ($(this).is(":checked")) {** //returns false everytime
        //do something
        //
    }
    else {
        //do something
    }
}

请告诉我我在哪里做错了......

提前致谢

3 个答案:

答案 0 :(得分:6)

$('input[type="checkbox"]').click(function(){  // append click to any checkbox
    if ($(this).is(':checked')) {
        // do something
    }
});

答案 1 :(得分:6)

调用manage(val1, val2)时,this将成为全局对象(如果处于严格模式,则为未定义)

但您可以使用this手动设置call值。试试这个:

onclick="manage.call(this, val1, val2);"

现在this将是您刚刚点击的内容。

为了澄清一点,onclick="____" this内部是您点击的瘦身。但是一旦从那里调用函数,它就成为函数中的全局对象。所以:

onclick="foo(this);"

function foo(val) {
    alert(this);
    alert(val);
}

警告[object DomWindow](全局对象)然后[object HtmlInputElement](我点击的内容)

没有太多细节,这是“函数调用”在JavaScript中如何工作的结果。

答案 2 :(得分:2)

您需要设置onclick的上下文,或将其作为参数传递给它:

<input type="checkbox" onclick="manage(this, 'val1', 'val2');"></input>
<script>
function manage(that, val1, val2) {
   if ($(that).is(":checked")) {
       alert('checked')
    }
    else {
       alert('unchecked')
    }
}
</script>

jsFiddle

当然,最好的办法是不要使用内嵌式javascript,请使用TerryR写的内容。