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

ANK*_*KIT 0 jquery

我有一个html页面,我有多个"复选框",每个都调用一个函数onclick.

像这样的东西

onclick="manage(val1, val2)
Run Code Online (Sandbox Code Playgroud)

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

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

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

提前致谢

Ter*_*rry 6

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


Ada*_*kis 6

manage(val1, val2)被调用时,this将是全球对象(或不确定的,如果你在严格模式是)

但您可以this手动设置值call.试试这个:

onclick="manage.call(this, val1, val2);"
Run Code Online (Sandbox Code Playgroud)

现在this将是你刚刚点击的任何内容.

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

onclick="foo(this);"

function foo(val) {
    alert(this);
    alert(val);
}
Run Code Online (Sandbox Code Playgroud)

警报[object DomWindow](全局对象)然后[object HtmlInputElement](我点击的东西)

在没有深入细节的情况下,这是"函数调用"在JavaScript中的工作原理的结果.