繁体   English   中英

jQuery inArray函数未在更改选择时获取值

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM