jQuery:未捕获的错误:语法错误,无法识别的表达式
Posted
技术标签:
【中文标题】jQuery:未捕获的错误:语法错误,无法识别的表达式【英文标题】:jQuery: Uncaught Error: Syntax error, unrecognized expression 【发布时间】:2013-10-10 03:55:22 【问题描述】:console.log($('"#'+d+'"'));
在我的 html 中,我有:
<div id="2013-10-23">
<h1>5</h1>
<p>eeeeeeeeeeee</p>
</div>
在上面的代码中,我有一个<div>
和2013-10-23
的id
,当得到id
时,它会抛出这个语法错误:
Uncaught Error: Syntax error, unrecognized expression: "#2013-10-23"
【问题讨论】:
【参考方案1】:试试
console.log($("#"+d));
您的解决方案是将双引号作为字符串的一部分传递。
【讨论】:
【参考方案2】:不需要“双引号”+“单引号”组合
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 */
【讨论】:
【参考方案3】:如果您尝试使用缺少 ] 的选择器,也可能在 safari 中发生这种情况,例如
$('select[name="something"')
但有趣的是,这个缺少括号的相同 jquery 选择器可以在 chrome 中使用。
【讨论】:
【参考方案4】:尝试使用:
console.log($("#"+d));
这将删除您使用的额外引号。
【讨论】:
【参考方案5】:试试这个(ES5)
console.log($("#" + d));
ES6
console.log($(`#$d`));
【讨论】:
【参考方案6】:我不得不多看一点才能解决我的问题,但解决问题的方法是找到错误所在。 Here 它在 Jquery 的错误转储中展示了如何做到这一点。
在我的情况下,id
是空的,$("#" + id);
;产生错误。
这是我没有寻找的地方,因此有助于查明它的位置,以便我可以进行故障排除和修复。
【讨论】:
谢谢你。它确实有助于我们理解 JQUERY 错误消息的结构如何指向特定的问题位置。确实 - 这是我遇到的错误 - 我在尝试连接 AJAX 的值时缺少 # id,即 $("#"+Data_G).serialize()【参考方案7】:如果您使用的是 jQuery 2.1.4 或更高版本,请尝试以下操作:
$("#" + this.d);
或者,您可以在使用之前定义 var。它使您的代码更简单。
var d = this.d
$("#" + d);
【讨论】:
【参考方案8】:对于一些来到这里的人,您的id
属性中可能有一个特殊字符,因此 jQuery 无法正确读取它。
ID 和 NAME 标记必须以字母 ([A-Za-z]) 开头,并且可以是 后跟任意数量的字母、数字 ([0-9])、连字符 ("-")、 下划线(“_”)、冒号(“:”)和句点(“.”)。
查看此答案以获取更多详细信息: What are valid values for the id attribute in HTML?
【讨论】:
以上是关于jQuery:未捕获的错误:语法错误,无法识别的表达式的主要内容,如果未能解决你的问题,请参考以下文章
如何防止 jQuery tablesorter 中的“未捕获的异常:语法错误,无法识别的表达式”?
未捕获的错误:语法错误,无法识别的表达式:不支持的伪:[重复]
未捕获的错误:语法错误,无法识别的表达式:select:[id * =“devices_0_command”] [关闭]