有没有更快的写作方式?
if ($('#id').val()==7 || $('#id').val()==8 || $('#id').val()==9){
console.log('value of #id is 7, 8, or 9!')
};
我想的是:
if ($('#id').val()== 7||8||9){
console.log('value of #id is 7, 8, or 9!')
};
答案 0 :(得分:12)
您可以使用indexOf(),它返回在数组中可以找到给定元素的第一个索引,如果不存在则返回-1。
if ([7,8,9].indexOf(+$('#id').val()) > -1){
console.log('value of #id is 7, 8, or 9!')
};
上述功能适用于IE9 +,对于较旧的浏览器,您可以使用PolyFill或jQuery.inArray(value, array)
if (jQuery.inArray(+$('#id').val(),[7,8,9]) > -1){
console.log('value of #id is 7, 8, or 9!')
};
答案 1 :(得分:7)
加速代码的最佳方法是缓存该DOM引用:
var idval = +$('#id').val();
if (idval === 7 || idval === 8 || idval === 9) { ... }
当然,如果它真的是那三个值,那么:
if (idval >= 7 && idval <= 9) { ... }
答案 2 :(得分:1)
你可以做一个转换:
switch($('#id').val()){
case 7:
case 8:
case 9:
console.log('value of #id is 7, 8, or 9!');
break;
default:
console.log('value of #id is NOT 7, 8, or 9!')
}
答案 3 :(得分:1)
您还可以使用 $.inArray()
if($.inArray(+$('#id').val(),[7,8,9])) > -1)
console.log('value of #id is 7, 8, or 9!')
};
答案 4 :(得分:0)
除非值列表真的很长,否则它并不是那么简单:
if ([7, 8, 9].indexOf(parseInt($('#id').val(), 10)) != -1)
答案 5 :(得分:0)
我刚将这一个添加到jsperf: in 运算符。每个键:值(例如7:7)对中的值与此无关。
if ($('#id').val() in {7:7, 8:8, 9:9}) {
console.log('value of #id is 7, 8, or 9!')
};
请参阅https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/in