在检查输入的属性值时,我很难尝试利用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项目上的。
答案 0 :(得分:1)
您无法执行此操作,因为在编写时:
$(this).find("input[type='radio']").attr("value") === "No" || "no" || "NO"
还是true
$(this).find("input[type='radio']").attr("value") === "No"
为“否”,true
将为===
"no"
始终为真,因为它是一个字符串"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
条件相同!