如何使这个陈述更有效率?

时间:2015-07-08 14:09:11

标签: javascript jquery html

我希望检查一系列单选按钮中的每一个都会发生同样的事情。到目前为止,我有以下工作代码:

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提供相同的结果。

2 个答案:

答案 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
}