首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >错误:语法错误,无法识别的表达式:#commodity_type"+i+“

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

Stack Overflow用户
提问于 2015-09-17 09:53:36
回答 1查看 114关注 0票数 0

如何解决以下问题?

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

来自以下脚本:

代码语言:javascript
复制
$("#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) {

        }
    });
});
EN

回答 1

Stack Overflow用户

发布于 2015-09-17 10:04:26

您实际上是将字符串#commodity_type"+i+"作为CSS选择器传递给jQuery。尾随的+使选择器无效,但在任何情况下,您几乎肯定不希望i在字符串中实际存在;相反,我假设您想要它的值。

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

代码语言:javascript
复制
$('#commodity_type' + i).val(response[0].commodity_type);
//                ^---- string ends there, and we append i

但是,如果这段代码处于i可能更改的循环中,则需要一个不会更改的值。您可以使用Function#bind获得一个:

代码语言:javascript
复制
success: function (index, response) {
    $('#commodity_type' + index).val(response[0].commodity_type);
}.bind(null, i)

注意结尾处的.bind(null, i)Function#bind返回一个函数,当调用该函数时,this将调用原始函数,并将其设置为第一个参数(我们不关心this,因此我只是传递null),然后是传递bind的参数,然后是调用绑定函数的参数。因此,.bind(null, i)将在此时接受i的值,并在调用原始函数时使用该值作为第一个参数。然后是jQuery给出的success函数的参数。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32627414

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档