console.log($('"#'+d+'"'));
在我的HTML中,我有:
<div id="2013-10-23">
<h1>5</h1>
<p>eeeeeeeeeeee</p>
</div>
在上面的代码中,我有一个 <div>
,其 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>
,其 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 */ }
如果您尝试使用一个缺失"]"的选择器,比如说,在Safari浏览器中也会出现这种情况。
$('select[name="something"')
有趣的是,在Chrome浏览器中,这个缺少一个括号的jQuery选择器仍然能够正常工作。
尝试使用:
console.log($("#"+d));
console.log($("#" + d));
ES6
console.log($(`#${d}`));
我不得不花更多时间寻找解决办法,但最终是找到了错误的位置才解决了问题。这里有一个Jquery的错误转储示例,可以帮助我们找到错误。
在我的情况下,id
为空,导致代码`$("#" + id);`出现了错误。
问题出在我没有看到的地方,这有助于锁定问题所在,以便进行故障排除并修复它。
我有一个带空格的选择器('#test .test')。
我的错误示例:
var href = "javascript:scrollto('"+key+"')";
对我有帮助的是:encodeURIComponent(value)
var href = "javascript:scrollto('"+encodeURIComponent(key)+"')";
$("#" + this.d);
或者,您可以在使用之前定义变量。这样可以使您的代码更简单。
var d = this.d
$("#" + d);
对于一些来到这里的人,你们的id
属性中可能有一个特殊字符,因此jQuery无法正确读取它。
ID和NAME令牌必须以字母([A-Za-z])开头,可以后跟任意数量的字母、数字([0-9])、连字符(“-”)、下划线(“_”)、冒号(“:”)和句点(“.”)。
查看此答案以获取更多详细信息: HTML中id属性的有效值是什么?