我希望检查一系列单选按钮中的每一个都会发生同样的事情。到目前为止,我有以下工作代码:
if ($("input[type=radio]:checked#rd1").length > 0) {
// do something
} else if ($("input[type=radio]:checked#rd2").length > 0) {
// do something
} else if ($("input[type=radio]:checked#rd3").length > 0) {
// do something
}
我尝试执行以下操作:
if ($("input[type=radio]:checked#rd1"||"input[type=radio]:checked#rd2").length > 0) {...}
我得到一个警告,说它是启发式无法访问的。
无论如何使这个更紧凑?
编辑:如果选中#rd1 /#rd2 /#rd3,他们都会做同样的事情。 //在这种情况下执行某些操作意味着每个单选按钮的结果相同。所以我想让if语句更简洁,因为它会为每个' check&#39提供相同的结果。答案 0 :(得分:2)
从你之前做过的事情来判断:这应该能解决你的尝试。
if ($("input[type=radio]:checked#rd1").length > 0
||$("input[type=radio]:checked#rd2").length > 0 || $("input[type=radio]:checked#rd3").length > 0) {
// do something
}
还有其他方法可以在JQuery中有效地使用名称。
if ($("input[name='name']").is(':checked')) {
//do something
}
或通过类名
if($("input:radio[class='className']").is(":checked")) {
//do something
}
答案 1 :(得分:2)
不需要冗长的选择器,因为ID必须是唯一的。此外,在这种情况下0为假,因此您可以将其修剪下来,只需要这个...
if ($("#rd1:checked").length) {
// do something
}
else if ($("#rd2:checked").length) {
// do something
}
else if ($("#rd2:checked").length) {
// do something
}
由于您现在已确认// do something
在所有情况下都相同,我会将其更改为此...
if ($("#rd1:checked, #rd2:checked, #rd3:checked").length) {
// do something
}