当复选框从未选中状态更改为选中状态时,我需要运行功能。
所以我使用.change
事件来触发所有内容,但在运行函数之前使用.prop
检查以确保实际选中或取消选中该复选框,对吗?
<form>
<input class="target" type="checkbox" value="Field 1">
</form>
$(".target").change( function(){
if(this.prop("checked", true)){
alert("this is checked");
} else {
alert("this is not checked");
}
});
上面的代码不起作用,我不知道为什么......
我选择了.target
,它正在调用.change
事件监听器。
.target
为this
,因为它正在调用.change
方法。
因此该函数说“当.target
更改时,检查.target
的”已检查“属性是否为真。如果是,请提醒。否则,请提醒别人。”
在.change
的jQuery文档中,它说“当值更改时,更改事件将发送给元素。”他们谈论的值是不元素的.val
,对吗?完全不同的“价值”。因为.val
的{{1}}永远不会改变,因为它现在是硬编码的。
答案 0 :(得分:1)
目前,您正在尝试在元素上调用方法prop
(因为它不是jQuery对象,因此不存在)。你需要它检查值,而不是设置它。将this.prop("checked", true)
更改为$(this).is(':checked')
答案 1 :(得分:1)
您正在使用prop
的setter版本,也就是说您正在告诉复选框为checked
。您应该使用prop
的getter版本。
if($(this).prop('checked') === true){
alert("this is checked");
} else {
alert("this is not checked");
}
编辑:我的不好,迟到了,确定不正确使用道具。更新了此参考。
或
if(this.checked === true) { ...
答案 2 :(得分:1)
简单的方法是让$(this).is(":checked")
来处理if或者像:
$(".target").change( function(){
if($(this).is(":checked")){
alert("this is checked");
} else {
alert("this is not checked");
}
});
您需要检查是否已选中,未设置要检查的值。并且this
没有.prop()
您需要使用Jquery对象$(this)
。
修改强>
我测试.is()
与.prop()
之后的表现有些错误.prop()
比.is()
快得多。
两者都会给我们相同的结果,但.is()
更慢。
$(".target").change( function(){
if($(this).prop(":checked")){
alert("this is checked");
} else {
alert("this is not checked");
}
});
或者更快:
$(".target").change( function(){
if(this.checked){
alert("this is checked");
} else {
alert("this is not checked");
}
});
答案 3 :(得分:0)
试试这个:
$(document).ready(function () {
$(".target").click(function () {
if ($(".target").is(":checked")) {
alert("this is checked");
}
else{
alert("this is not checked");
}
});
});