0

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

我有这段 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");  

...但是一个真正有效的片段?谢谢!

4

3 回答 3

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);
});
于 2013-07-21T21:06:52.047 回答
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.

于 2013-07-21T21:07:28.190 回答
0

像下面这样的东西应该可以工作。

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

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

于 2013-07-21T21:10:46.507 回答