javascript jQuery:返回上一页语法错误,无法识别的表达式

xzlaal3s  于 2023-03-28  发布在  Java
关注(0)|答案(9)|浏览(87)
console.log($('"#'+d+'"'));

在我的HTML中,我有:

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

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

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

xkrw2x1b1#

尝试

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

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

6ioyuze2

6ioyuze22#

不需要双引号+单引号组合

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 */ }
n8ghc7c1

n8ghc7c13#

这也可能发生在safari中,例如,如果您尝试使用缺少]的选择器

$('select[name="something"')

但有趣的是,这个缺少括号的jquery选择器在chrome中也能工作。

bmp9r5qi

bmp9r5qi4#

尝试使用:

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

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

eivnm1vs

eivnm1vs5#

试试这个(ES5)

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

ES6

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

to94eoyn6#

我不得不多看一点来解决我的问题,但解决问题的方法是找到错误在哪里。这里展示了如何在Jquery的错误转储中做到这一点。
在我的例子中,id是空的,并且`$(“#”+ id);产生错误。
这是我没有看到的地方,所以这有助于查明问题所在,这样我就可以排除故障并修复它。

dnph8jn4

dnph8jn47#

如果你使用的是jQuery 2.1.4或更高版本,试试这个:

$("#" + this.d);

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

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

bihw5rsg8#

对于一些人来说,你可能在id属性中有一个特殊字符,所以jQuery无法正确读取它。
ID和NAME标记必须以字母([A-Za-z])开始,后面可以跟任意数量的字母、数字([0-9])、连字符(“-”)、下划线(“_”)、冒号(“:“)和句点(“.”)。
查看此答案以了解更多详细信息:HTML中id属性的有效值是什么?

yhxst69z

yhxst69z9#

我有一个带有空格的选择器**('#test.test')。
我的错误示例:

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

这对我有帮助:encodeURIComponent(value)

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

相关问题