jQuery:检查是否选中了复选框
我有一个html页面,其中有多个“复选框”,每个复选框都是调用函数onclick 像这样的jQuery:检查是否选中了复选框,jquery,Jquery,我有一个html页面,其中有多个“复选框”,每个复选框都是调用函数onclick 像这样的 onclick="manage(val1, val2) 在我的函数中,当我得到checkbox的check状态时,每次都给出false function manage(val1, val2) { **if ($(this).is(":checked")) {** //returns false everytime //do something // }
onclick="manage(val1, val2)
在我的函数中,当我得到checkbox的check状态时,每次都给出false
function manage(val1, val2) {
**if ($(this).is(":checked")) {** //returns false everytime
//do something
//
}
else {
//do something
}
}
请告诉我我在哪里做错了
提前感谢当调用manage(val1,val2)
时,此
将是全局对象(如果处于严格模式,则未定义)
$('input[type="checkbox"]').click(function(){ // append click to any checkbox
if ($(this).is(':checked')) {
// do something
}
});
但是您可以使用call
手动设置this
值。试试这个:
onclick="manage.call(this, val1, val2);"
现在,这个
将是您刚才单击的任何内容
只是想进一步澄清一下,在onclick=“\uuuuuuuuu”
中,这是您单击的内容。但一旦从那里调用函数,它就成为函数中的全局对象。因此:
onclick="foo(this);"
function foo(val) {
alert(this);
alert(val);
}
警报[object DomWindow]
(全局对象),然后[object HtmlInputElement]
(我单击的对象)
在不涉及太多细节的情况下,这是JavaScript中“函数调用”工作方式的结果 您需要设置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>
功能管理(即val1、val2){
如果($(that).is(“:checked”)){
警报('已选中')
}
否则{
警报(“未选中”)
}
}
当然,最好不要使用内嵌javascript,使用TerryR编写的东西。我可以发誓浏览器会自动这么做。。。编辑:或者我正在考虑什么时候可以完成类似onclick=“blah(this)”:)+1这样的操作,以使用call
而不是仅仅作为常规参数传递。使其符合预期。ЖЖЖЖЖЖЖΞЖЖЖΞЖЖЖЖЖЖЖ-:(由于您的用户名,我永远不用担心评论太少)ЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖ,call和apply是我最喜欢在JavaScription中使用的一些工具,这是一个非常棒的名字。我认为调用和应用在JavaScript的设计中是不可或缺的:p.只是一些建议,这里有:checkbox
选择器和this.checked
。您的选择器可以利用QSA而无需任何预处理:)@alex:[type=“checkbox”]
友好,除非我误解了您?@amnotiam:我想您误解了我:)@alex:啊,是的,很可能。我以为你是说[type=“checkbox”]
会阻止qSA
。完全同意您使用此选项。尽管选中了。)