我怎么说jQuery中的'和/或'?

时间:2013-07-21 21:02:59

标签: jquery select option

我有些东西让我无法理解......已经尝试了很长时间了。

我有这个jQuery片段:

$("#amp").on('change', function () { 
    $("#cab").prop('disabled', $(this).val() == "Combo Models - 22W");
    $("#cab option").prop("selected", true);
});

我需要复制这段代码4次,但我需要将'Combo Models - 22W'改为4种不同的东西。

我尝试重复代码4次并更改属性,但它不起作用。

有没有办法说出类似的话:

$("#cab").prop('disabled', $(this).val() == "Combo Models - 22W" OR "Combo Models - 50W" OR "Combo Models - 75W");  

...但实际上有效的片段?谢谢!

3 个答案:

答案 0 :(得分:2)

在这种情况下,正则表达式可能很有用。

var modelsExp = /^Combo Models - (22|50|75)W$/;

$("#amp").on('change', function () { 
    $("#cab").prop('disabled', modelsExp.test($(this).val());
    $("#cab option").prop("selected", true);
});

答案 1 :(得分:0)

您可以将所有值存储在哈希映射中。像这样:

var map = {};
map["Combo Models - 22W"] = true;
map["Combo Models - 50W"] = true;
map["Combo Models - 75W"] = true;

等等。

然后你可以使用:

$("#cab").prop('disabled', false || map[$(this).val()]);

如果使用map[$(this).val()获取的字符串位于哈希映射中,则map[$(this).val()将计算为true。否则,它评估为undefined。然后,false || undefined部分变为简单明确的false

答案 2 :(得分:0)

以下内容应该有效。

$("#cab").prop('disabled', ( $(this).val() == "Combo Models - 22W" ) || ( $(this).val() == "Combo Models - 50W" ) || ( $(this).val() == "Combo Models - 75W" )); 

尽管如此,我认为对你原来的问题有一个更好的答案,而不是做这样的事情。您应该能够使用某种变量代替对这些字符串进行硬编码。