我有些东西让我无法理解......已经尝试了很长时间了。
我有这个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");
...但实际上有效的片段?谢谢!
答案 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" ));
尽管如此,我认为对你原来的问题有一个更好的答案,而不是做这样的事情。您应该能够使用某种变量代替对这些字符串进行硬编码。