引号内的 Jquery 变量返回语法错误
Posted
技术标签:
【中文标题】引号内的 Jquery 变量返回语法错误【英文标题】:Jquery variable within quotes returning Syntax Error 【发布时间】:2013-08-27 19:38:36 【问题描述】:我真的对最简单的事情感到困惑。谁能帮我解决这个问题?
我有以下代码:
$('#nav a').click(function()
var $href = $(this).attr('href');
if(!$($href).hasClass('top'))
console.log("'#" + $href + "'");
);
每次我“点击”“#nav”中的链接时,它都会记录这一点:
未捕获的错误:语法错误,无法识别的表达式
有什么线索吗?
谢谢 ;)
【问题讨论】:
我认为问题出在$($href)
$href 的值是多少?在 if 语句之前记录它
$href 的值是一个ID,可以是#page 或任何类似的东西。我尝试在 if 语句之前记录它,它现在返回日志和错误...奇怪
很奇怪,可能是 Jquery 在线文件的连接错误,我现在已经测试了以下内容(实际上与这篇文章中的问题相同)并且它返回很好,没有错误:) $(' #navigation a').click(function() var $href = $(this).attr('href'); console.log("'"+$href+"'"); if(!$($href ).hasClass('top')) $($href).addClass('top'); );
在这种情况下,我建议不要在你的 href 变量前面加上 $。这通常是为 jQuery 对象保留的。比如,`var $div = $('#my-div')。在这种情况下,它不是一个 jQuery 对象;这是一个字符串。 (更不用说它让 $($href) 看起来很疯狂。)
【参考方案1】:
这一行:
console.log("'#" + $href + "'");
向我建议您的 href 类似于“page”,您现在在其前面加上“#”。如果是这样的话,那么前面的选择器
if(!$($href).hasClass('top'))
不会工作,因为你实际上是在做
if (!$('page').hasClass('top'))
并且“page”不是有效的选择器。您的 href 需要是“#page”。此外,如果 href 没有 #,我认为您的浏览器会将其解释为要尝试点击的实际 URL。
如果不是这样,多一点上下文会有所帮助。应该发生什么?你想做什么?
【讨论】:
以上是关于引号内的 Jquery 变量返回语法错误的主要内容,如果未能解决你的问题,请参考以下文章