Javascript / jQuery OR运算符在attr值上无法正常工作

时间:2018-06-23 12:35:03

标签: javascript jquery

在检查输入的属性值时,我很难尝试利用Javascript OR运算符:||

过去,在使用.val()时,我曾经使用过OR运算符,并且可以使用。我的代码示例如下,该代码示例实质上检查了输入的value属性,可以在不使用OR运算符的情况下进行查找,但是一旦添加它,它几乎只会对第一个操作,我没有错在这里?

$(".js__question-wrap").each(function() {
          if ( $(this).find("input[type='radio']").attr("value") === "No" || "no" || "NO" ) {
            $(this).closest(".js__question-wrap").find("[data-radiolabel='no']").removeClass("label-is-hidden");
          } else if ( $(this).find("input[type='radio']").attr("value") === "Yes" || "yes" || "YES" ) {
            $(this).closest(".js__question-wrap").find("[data-radiolabel='yes']").removeClass("label-is-hidden");
          }
        });

PS:

我已经尝试过在OR运算符之后添加选择器,如下所示:

if ( $(this).find("input[type='radio']").attr("value") === "No" || $(this).find("input[type='radio']").attr("value") === "no" )

我没有那么幸运。

这是在Magento 2项目上的。

1 个答案:

答案 0 :(得分:1)

您无法执行此操作,因为在编写时:

$(this).find("input[type='radio']").attr("value") === "No" || "no" || "NO"还是true

    如果值$(this).find("input[type='radio']").attr("value") === "No"为“否”,
  1. true将为===
  2. "no"始终为真,因为它是一个字符串
  3. "NO"就像第二个

您必须在$(this).find("input[type='radio']").attr("value")处告诉Javascript每个值都要测试什么!

所以:

$(this).find("input[type='radio']").attr("value") === "No" || "no" || "NO"

成为

$(this).find("input[type='radio']").attr("value") === "No" || 
$(this).find("input[type='radio']").attr("value") === "no" || 
$(this).find("input[type='radio']").attr("value") === "NO"

您可以使用此jQuery函数来做到这一点:$.inArray() DOC

$.inArray( $(this).find("input[type='radio']").attr("value"), ["No", "no", "NO"] ) >= 0

else if条件相同!