jQuery inArray函数没有获取更改选择的值

时间:2016-05-11 17:15:25

标签: javascript jquery

如果选择了选择中的特定值,我正在尝试显示一个元素:

    $(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元素显示的实际值,所以我不知道为什么它不起作用。

4 个答案:

答案 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);

    });
});