首页 > 解决方案 > 未捕获的错误:语法错误,无法识别的表达式 - JQuery 3.2.1

问题描述

JQuery 3.2.1 抛出以下错误

jquery-3.2.1.min.js:2 Uncaught Error: Syntax error, unrecognized expression: #row_L&TFH
    at Function.ga.error (jquery-3.2.1.min.js:2)
    at ga.tokenize (jquery-3.2.1.min.js:2)
    at ga.select (jquery-3.2.1.min.js:2)
    at Function.ga [as find] (jquery-3.2.1.min.js:2)
    at r.fn.init.find (jquery-3.2.1.min.js:2)
    at new r.fn.init (jquery-3.2.1.min.js:2)
    at r (jquery-3.2.1.min.js:2)
    at Object.success (allocate.js:84)
    at i (jquery-3.2.1.min.js:2)
    at Object.fireWith [as resolveWith] (jquery-3.2.1.min.js:2)

在以下代码行

$('#row_'+code).remove();

当代码中包含“&”时会引发错误。例如:code = "L&TFH" 它会引发错误,但当 code = "ABB" 时不会。

标签: javascriptjquery

解决方案


当 id 值不是“标识符”时,您必须引用不符合该语法的字符。因此"#row_L&TFH"不会工作,但"#row_L\\&TFH"会。

你可以用

$('#row_' + code.replace(/[^0-9A-Za-z_]/g, "\\$0")).remove();

这不仅适用于 id 值,也适用于类名。id 或类名包含非标识符字符并非无效,但您必须在 CSS 选择器中使用显式表示法来引用它们。这类似于在 JavaScript 中对象属性名称可以是任何字符串,但除非它是标识符,否则您必须使用[ ]带有字符串的符号来访问或设置属性值。


推荐阅读