2011-01-10 242 views
0

,我沿介意我的jQuery的业务,当突然间,我试图做此打算:奇怪的jQuery的错误

var myVariable = 'some-id-here'; 
$('#' + myVariable).addClass('some-class'); 

一切都很好,很正常,直到我关闭我的浏览器。我重新打开页面后,jQuery的抛出此奇怪的错误:

Uncaught Syntax error, unrecognized expression: # 

我能够用它来取代第二行和它的工作,但我很好奇,为什么第一部分没有工作,我关闭后重新打开我的浏览器。

$(document.getElementById(myVariable)).addClass('current'); 
+0

myVariable失败时的价值是什么? – 2011-01-10 15:05:57

+0

你能重现吗?你是否确定这是有问题的线路? 'myVariable`是否按照上面显示的方式进行字面声明? – 2011-01-10 15:06:27

+0

我敢肯定,你可能会得到这个错误的唯一原因是因为变量评估为空字符串,实际上导致你调用`$('#')` – 2011-01-10 15:16:32

回答

1

听起来好像你在定义myVariable时,有一个#和id的开头。 $(document.getElementById(myVariable)).addClass('current');

我: - 这也将导致你使用的是这是你的选择,当得到确切的错误

$('##some-id-here').addClass('some-class'); 

如果是这样的问题,它为什么会用这个代替不工作解释不知道为什么关闭浏览器会影响这一切。也许你改变了你的html,这似乎只在你重新打开你的浏览器时才反映出来?

0

如果myVariable不为空,即使具有该ID的元素不存在,该工作也不会出现问题。

1

$('#')抛出“未捕获的语法错误,无法识别的表达式:#”在jQuery中。所以问题几乎肯定是myVariable是空的。

0

你在其他地方使用代码吗?一些线下来?