奇怪的jQuery错误
我一直在关注我的jQuery业务,突然,我尝试这样做:奇怪的jQuery错误,jquery,Jquery,我一直在关注我的jQuery业务,突然,我尝试这样做: var myVariable = 'some-id-here'; $('#' + myVariable).addClass('some-class'); 在我关闭浏览器之前,一切都很顺利。在我重新打开页面后,jQuery抛出了一个奇怪的错误: Uncaught Syntax error, unrecognized expression: # 我可以用这个替换第二行并让它工作,但我很好奇为什么在我关闭并重新打开浏览器后第一部分不能工作
var myVariable = 'some-id-here';
$('#' + myVariable).addClass('some-class');
在我关闭浏览器之前,一切都很顺利。在我重新打开页面后,jQuery抛出了一个奇怪的错误:
Uncaught Syntax error, unrecognized expression: #
我可以用这个替换第二行并让它工作,但我很好奇为什么在我关闭并重新打开浏览器后第一部分不能工作
$(document.getElementById(myVariable)).addClass('current');
如果
myVariable
不为空,即使ID为的元素不存在,也应该可以正常工作。$(“#”)
在jQuery中抛出“未捕获的语法错误,无法识别的表达式:#”。因此,几乎可以肯定的是,myVariable
是空的。您是否在其他地方使用该代码?下面的一些行?听起来像是在定义myVariable
时,有一个#
和id的开头。这也会导致使用此作为选择器时出现的确切错误-
$('##some-id-here').addClass('some-class');
如果这是一个问题,它将解释为什么改用它会起作用:$(document.getElementById(myVariable)).addClass('current')代码>
我不知道为什么关闭浏览器会影响这一切。也许您对html进行了更改,但似乎只有在重新打开浏览器时才会反映出来?当myVariable失败时,它的值是多少?您能重现吗?你有1000%的把握这就是问题所在吗?myVariable
是否按照您上面显示的方式按字面意思声明?我很确定您可能会出现该错误的唯一原因是因为变量的计算结果为空字符串,实际上导致您调用$(“#”)
pinusnegra:“16豆汤”Pekka:是的,这是一行。移除它会停止这些区域。是的,它是通过var
语句声明的,尽管是在一个循环中。虽然,在整个循环中,每次都会声明它。我也这么认为,但我console.log()
ged了它,它肯定有一个值。这是一个令人头痛的问题。你能用一个类似于你在问题中粘贴的两行示例重现这个问题吗?(我猜不是)我似乎不能做简化的测试用例,但奇怪的不是错误——不管我尝试了多少次,直到我重新启动浏览器,错误都不会被抛出。啊,是的。一定是这样。哈希标记已在字符串中。我想document.getElementById()
可以处理散列。仍然不确定浏览器重启的事情,但双哈希标签就是它。