错误:语法错误,无法识别的表达式:#commodity_type“+ i +”

时间:2015-09-17 09:53:37

标签: jquery

如何解决以下问题?

  

错误:语法错误,无法识别的表达式:#commodity_type“+ i +”

     

抛出新错误(“语法错误,无法识别的表达式:”+ a)

从以下脚本:

$("#stock_request_table").on("change", ".commodity_name" + i, function () {
    var commodity_id = this.value;

    $.ajax({
        type: "GET",
        url: "<?php echo base_url(); ?>reports/get_commodity_details/" + commodity_id + "/",
        dataType: "json",
        success: function (response) {
            $('#commodity_type"+i+"').val(response[0].commodity_type);

        },
        error: function (data) {

        }
    });
});

1 个答案:

答案 0 :(得分:0)

您实际上是将字符串#commodity_type"+i+"作为CSS选择器传递给jQuery。尾随+使该选择器无效,但无论如何,您几乎肯定不希望{/ 1}实际上字符串中;相反,我认为你想要它的价值。

假设您知道在收到ajax响应之前i不会更改,您只需调整引号:

i

如果此代码位于$('#commodity_type' + i).val(response[0].commodity_type); // ^---- string ends there, and we append i 可能更改的循环中,则需要一个不会更改的值。您可以使用i获取一个:

Function#bind

注意最后的success: function (index, response) { $('#commodity_type' + index).val(response[0].commodity_type); }.bind(null, i) .bind(null, i)返回一个函数,当调用它时,将调用原始函数,并将Function#bind设置为第一个参数(我们不关心this,所以我只是传递{{ 1}}),然后传递this的参数,然后是调用绑定函数的参数。因此null将在此时获取bind的值,并在调用原始函数时将该值用作第一个参数。然后它将跟随jQuery提供.bind(null, i)函数的参数。