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

时间:2013-10-03 12:34:57

标签: jquery

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

在html中我有

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

它抛出错误:

  

未捕获错误:语法错误,无法识别的表达式:“#2013-10-23”

在上面的代码中,我有一个带id="2013-10-23"的div,当得到该id时,它会引发语法错误

7 个答案:

答案 0 :(得分:36)

尝试

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

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

答案 1 :(得分:15)

&#34;双引号&#34; +&#39;单引号&#39;不需要组合

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

答案 2 :(得分:8)

尝试使用:

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

这将删除您正在使用的额外报价。

答案 3 :(得分:5)

如果您尝试使用缺少的选择器,也可以在safari中进行此操作,例如

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

但有趣的是,这个带有缺少括号的jquery选择器将在chrome中运行。

答案 4 :(得分:4)

试试这个(ES5)

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

ES6

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

答案 5 :(得分:0)

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

$("#" + this.d);

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

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

答案 6 :(得分:0)

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

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

这是我一直在寻找的地方,因此可以帮助查明它在哪里,以便我进行故障排除和修复。