获取jQuery无法识别的表达式错误

我有一个HTML模板,其中包含一个jQuery函数,它执行对我的Web服务器的Ajax请求 . 响应中的数据包含具有汽车品牌名称和数字的字符串,用于在每个特定汽车品牌的输入复选框中设置值 . 以下是模板中的示例:

<input type="checkbox" name="list" value="2">
<label for="brand">Mercedes</label>

我正在尝试使用以下jQuery代码来查看是否为每个汽车品牌选中了输入复选框 . index.name是一个字符串,包含汽车品牌(例如“Mercedes”),index.id包含值2,这是一个JavaScript编号类型(我在控制台中确认了这一点):

$.each(data, function(key, index) {
    if ( $('input[type=checkbox][value=index.id]').prop('checked', true) ) {
        console.log("Checkbox is checked");
    }
});

当我运行jQuery代码时,我收到此错误:

Uncaught Error: Syntax error, unrecognized expression: input[type=checkbox][value=index.id]

谁能告诉我我做错了什么?我已经阅读了有关如何执行此操作的其他Stackoverflow问题以及我正在做的事情似乎是正确的 .

回答(1)

3 years ago

如果参数包含任何特殊字符(在本例中为 . 字符),则需要将参数引用到属性选择器:

$('input[type=checkbox][value="index.id"]')

但是,这将查找一个复选框,其值为文字字符串 index.id . 如果您实际上尝试使用表达式 index.id 的值,则不会这样做,因为变量不会在字符串内扩展 . 你需要连接:

$('input[type=checkbox][value="' + index.id+ '"]')

或使用ES6模板文字:

$(`input[type=checkbox][value="${index.id}"]`)