有这一行:
if($('#address_nations_id').val() != 105 && $('#address_nations_id').val() != 74)
有没有办法缩短它?
我试过了:
if($('#address_nations_id').val() != 105 && != 74)
但它不起作用。
有什么想法吗?
此致
哈维尔
答案 0 :(得分:4)
由于我猜测(基于ID)你想要检查许多,你可以使用$.inArray()
轻松扩展该列表,例如:
if($.inArray($('#address_nations_id').val(), ["105", "74"]) > -1)
You can give it a try here,请记住,您需要使用此方法的字符串,因为JavaScript使用==
进行弱键入不起作用,而.val()
会返回一个字符串。
答案 1 :(得分:3)
您可以做的一件事是事先获得价值:
var val = $('#address_nations_id').val();
if(val != 105 && val != 74)
无论如何哪个更好,因为你只进行一次方法调用而不是两次。
如果你有很多值,我会像这样创建一个查找表:
var values = {
"105": 1,
"74": 1
}
并做
if(!($('#address_nations_id').val() in values)) {
//...
}
这应该比搜索数组中的值快。(不确定这个)。
答案 2 :(得分:0)
var val = $('#address_nations_id').val();
if(val != '105' && val != '74') {
//do stuff
}
修改:
$('#address_nations_id').val()
返回的字符串不是数字
答案 3 :(得分:0)
我会选择Felix's suggestion。但仅仅是为了完整性:
在阵列上有indexOf
的浏览器上,您可以执行以下操作:
if ([105, 74].indexOf(parseInt($('#address_nations_id').val())) >= 0)
...但我不会仅仅为两个值推荐它。它不太清晰,不必要地复杂,并且并非所有浏览器都拥有它(尚未)。大多数批评也适用于使用jQuery的inArray
函数。
还有switch
:
switch (parseInt($('#address_nations_id').val())) {
case 105:
case 74:
break;
default:
/* do your thing here *?
break;
}
......但这几乎不可能更短,几乎肯定不适合只有两个值。