console.log($('"#'+d+'"'));
在我的 HTML 中,我有:
<div id="2013-10-23">
<h1>5</h1>
<p>eeeeeeeeeeee</p>
</div>
在上面的代码中,我有一个<div>
of id
,2013-10-23
当得到它时,id
它会抛出这个语法错误:
Uncaught Error: Syntax error, unrecognized expression: "#2013-10-23"
console.log($('"#'+d+'"'));
在我的 HTML 中,我有:
<div id="2013-10-23">
<h1>5</h1>
<p>eeeeeeeeeeee</p>
</div>
在上面的代码中,我有一个<div>
of id
,2013-10-23
当得到它时,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 */ }
尝试使用:
console.log($("#"+d));
这将删除您使用的额外引号。
例如,如果您尝试使用缺少 ] 的选择器,这也可能在 safari 中发生
$('select[name="something"')
但有趣的是,这个缺少括号的相同 jquery 选择器将在 chrome 中工作。
试试这个(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 属性的有效值是什么?