jQuery:未捕获错误:语法错误,无法识别的表达式

jQuery: Uncaught Error: Syntax error, unrecognized expression

本文关键字:错误 识别 表达式 语法 jQuery      更新时间:2023-09-26
console.log($('"#'+d+'"'));

在我的HTML中,我有:

<div id="2013-10-23">
    <h1>5</h1>
    <p>eeeeeeeeeeee</p>
</div>

在上面的代码中,我有一个id2013-10-23<div>,当得到该id时,它会抛出以下语法错误:

Uncaught Error: Syntax error, unrecognized expression: "#2013-10-23"

尝试

console.log($("#"+d));

您的解决方案是将双引号作为字符串的一部分传递。

不需要

"双引号"+"单引号"组合

console.log( $('#'+d) ); // single quotes only
console.log( $("#"+d) ); // double quotes only

你的选择器结果是这样的,这用引号是矫枉过正的:

$('"#abc"') // -> it'll try to find  <div id='"#abc"'>
// In css, this would be the equivalent:
"#abc"{ /* Wrong */ } // instead of:
#abc{ /* Right */ }
如果您

尝试缺少 ] 的选择器,这也可能发生在 safari 中

,例如
$('select[name="something"')

但有趣的是,这个缺少括号的 jQuery 选择器可以在 Chrome 中工作。

尝试使用:

console.log($("#"+d));

这将删除您使用的额外引号。

试试这个(ES5)

console.log($("#" +  d));

ES6

console.log($(`#${d}`));

我不得不多看一点来解决我的问题,但解决它的方法是找到错误所在。这里展示了如何在Jquery的错误转储中做到这一点。

在我的情况下id是空的,'$("#" + id); 产生错误。

这是我没有寻找的地方,因此这有助于查明问题所在,以便我可以进行故障排除和修复。

如果您使用的是 jQuery 2.1.4 或更高版本,请尝试以下操作:

$("#" + this.d);

或者,您可以在使用之前定义 var。它使您的代码更简单。

var d = this.d
$("#" + d);

对于某些来到这里的人来说,你的 id 属性中可能有一个特殊的字符,所以 jQuery 无法正确读取它。

ID 和 NAME 令牌必须以字母 ([A-Za-z]) 开头,并且可以是后跟任意数量的字母、数字 ([0-9])、连字符 ("-"),下划线 ("_")、冒号 (":") 和句点 (".")。

查看此答案以获取更多详细信息:HTML 中 id 属性的有效值是什么?

我有一个带空格的选择器('#test .test')。

我的错误示例:

var href = "javascript:scrollto('"+key+"')";

对我来说,这很有帮助:encodeURIComponent(value)

var href = "javascript:scrollto('"+encodeURIComponent(key)+"')";