如果选择了选择中的特定值,我正在尝试显示一个元素:
$(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 <时它不会/ em>的
console.log(id)返回使que元素显示的实际值,所以我不知道为什么它不起作用。
答案 0 :(得分:2)
听起来你有类型问题给我。你必须记住inArray是类型敏感的。所以你的val()作为一个字符串(很可能)来了,但是数组有int数组你总是得到inArray的-1返回。将this.val()调用转换为int
parseInt($(this).val(), 10);
答案 1 :(得分:1)
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);
});
});
答案 2 :(得分:0)
尝试使用trim(id),可能会有一些whitespacing有
答案 3 :(得分:-1)
这不起作用,因为你使用!== in if condition。 尝试!=如果条件,它将工作。使用下面的代码我改进了你的代码。
$(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);
});
});