【发布时间】:2011-12-06 14:53:47
【问题描述】:
我有一个可编辑的 ajax 表,并且有一个“解锁”字段,每行都有一个复选框。
当我检查复选框时,我需要获取值 1(这部分我没问题!:)
我获取复选框值的代码:
($("#unlock_input_" + ID).val();))
但是当我取消选中任何一个复选框时,我需要获取值 0(我需要这部分的帮助)
所以....我怎样才能在 jquery 中做到这一点?谢谢
【问题讨论】:
我有一个可编辑的 ajax 表,并且有一个“解锁”字段,每行都有一个复选框。
当我检查复选框时,我需要获取值 1(这部分我没问题!:)
我获取复选框值的代码:
($("#unlock_input_" + ID).val();))
但是当我取消选中任何一个复选框时,我需要获取值 0(我需要这部分的帮助)
所以....我怎样才能在 jquery 中做到这一点?谢谢
【问题讨论】:
您可以使用:checked 选择器。然后你会在未选中该框时返回undefined,这是错误的,所以:
var result = $("#unlock_input_" + ID + ":checked").val() || 0;
result 如果选中则以复选框的值结束,如果不选中则以 0 结束,因为 JavaScript's curiously-powerful || operator 的工作方式。
另一种写法:
var result = $("#unlock_input_" + ID).filter(":checked").val() || 0;
当然,更直接的:
var cb = $("#unlock_input_" + ID)[0],
result = cb.checked ? cb.value : 0;
【讨论】:
:checked 选择器)。
? :路线走:)
:checked 肯定会比我上面的最后一个替代方案表现得更差,但是当然,除非你处于一个紧密的循环中,否则没关系。所以这是课程的马... :-) (我在 my 项目中所做的是使用我添加的名为checkedVal 的扩展方法,如果使用有效方法检查或返回@,则返回值987654335@ 如果未选中。)
将您的代码更改为此(使用prop 要求检查属性):
var result = $("#unlock_input_" + ID).prop('checked')?1:0;
编辑:
如果您明确需要该值而不是 1,请执行以下操作:
var element = $("#unlock_input_" + ID);
var result = element.prop('checked')?element.val():0;
【讨论】:
你可以使用复选框的checked属性来决定是1还是0。试试这个
if($("#unlock_input_" + ID)[0].checked){
alert("1");
}
else{
alert("0");
}
您可以使用jQuery is 方法来检查复选框是否被选中。
if($("#unlock_input_" + ID).is(":checked")){
alert("1");
}
else{
alert("0");
}
【讨论】:
.is(":checked") shudder ;-) 如果你要分支,我肯定会分支你的第一种方式,除非复选框可能不存在。
你可以检查它是否被检查
if($("#unlock_input_" + ID).is(':checked')){
myVal = "1";
}
else{
myVal = "0";
}
【讨论】: