引号内的 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 变量返回语法错误的主要内容,如果未能解决你的问题,请参考以下文章

PHP双引号和单引号引起麻烦

jQuery JSON 错误:语法错误,无法识别的表达式

语法错误:反引号替换中的 EOF

MySql 触发语法错误 1064 空单引号

MySQL DECLARE 中的 SELECT INTO 变量导致语法错误?

MySQL插入包含单引号和双引号的数据,给出语法错误