[英]jQuery inArray function not grabbing value on change select
我试图显示一个元素,如果在选择中选择了特定值:
$(function () {
$("#add_category3").change(function() {
var id = $(this).val();
if (jQuery.inArray(id, vehicles) !== -1)
$("#vehicle-fields").show();
else
$("#vehicle-fields").hide();
console.log(id);
});
});
如果我在inArray()函数中更改实际值的变量id (对值进行硬核),则效果很好,但是当我使用变量id时却无效。
console.log(id)会返回使que元素显示出来的实际值,所以我不知道为什么它不起作用。
听起来您在遇到类型问题。 您必须记住,inArray是类型敏感的。 因此,您的val()以字符串形式(最有可能通过)通过,但该数组具有int数组,则inArray总是会返回-1。 将this.val()调用转换为int
parseInt($(this).val(), 10);
function inArray(arrays,id){
var inarray = false;
for (var i = 0, l = arrays.length; i < l; i++) {
if (arrays[i] == id) {
inarray = true;
break;
}
}
return inarray;
}
使用您自己的自定义inArray。 因为inarray不会将字符串值与整数进行比较。
$(function () {
$("#add_category3").change(function() {
var id = $(this).val();
if (inArray(vehicles,id))
$("#vehicle-fields").show();
else
$("#vehicle-fields").hide();
console.log(id);
});
});
尝试使用trim(id),可能有一些白色间距
由于您在if条件中使用!==,因此无法使用。 在条件中尝试!=,它将起作用。 使用下面的代码,我改进了您的代码。
$(function () {
$("#add_category3").change(function() {
var id = $(this).val();
if (jQuery.inArray(id, vehicles) != -1)
$("#vehicle-fields").show();
else
$("#vehicle-fields").hide();
console.log(id);
});
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.