Javascript 如何使这种说法更有效率?

Javascript 如何使这种说法更有效率?,javascript,jquery,html,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]

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

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语句更简洁,因为它对每个“检查”的结果都是相同的。

从您之前所做的判断:这应该修复您尝试的结果

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中还有其他有效的方法,比如使用name

if ($("input[name='name']").is(':checked')) {
   //do something
}
或者通过一个类名

if($("input:radio[class='className']").is(":checked")) {
     //do something        
}

不需要冗长的选择器,因为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
}

而| |是正确的联会;因为每个组只能检查一个无线电,为什么不绑定更改事件并在处理程序中检查ID呢?顺便说一句,因为ID在文档上下文中必须是唯一的,所以作为选择器:rd1:checked,这就足够了。也就是说,您能否将所有相关的问题代码本身作为HTML标记和预期行为提供给“做点什么”部分,以使您的问题更清楚。编辑:现在我只是想知道//对所有人都做同样的事情吗???为什么不检查if$input[type=radio]:checked.length>0{而不是所有的if语句。如果你没有其他的输入[type=radio]应该行得通。我同意@A.Wolff…我可以看到一些可能使这种方式更有效的方法,但我们没有足够的信息确切地说明您正在尝试做什么,以便能够给出适当的答案。这可能是重复的工作非常好,当然我需要包括整个声明。谢谢!@foreverlearning:这与您的原始代码不同。它现在对所有3种情况都执行相同的//执行某些操作。您确定这就是您想要的吗?@foreverlearning则这将更“紧凑”:$:radio[id^=rd]:checked.长度。但如果它真的是你想要的,你的问题就没有意义了…@斜视从他的问题判断,他只是想办法检查单选按钮是否被选中。这就是为什么他试图将其压缩为一个。想想他的问题。嗯,他说他想缩短原始代码。那么它是如何变得更简单的呢tened取决于//do something块中的内容。原版可以根据选择的电台运行不同的代码,这似乎是可能的。想想他的问题。