【问题标题】:Simple jQuery code contains a syntax error that I can't find简单的 jQuery 代码包含我找不到的语法错误
【发布时间】:2011-02-03 11:14:44
【问题描述】:

我有这个(非常)简单的 JavaScript 函数,当用户单击“取消”链接时会调用它:

function hideNewUserPanel(){
    $('#create_user_panel').slideUp('slow');
    $('.right_interior_panel').slideDown('slow');
}

以及添加处理程序的代码:

$(function(){
    $('#cancel_create_user_btn').live('click', 
        function(){ hideNewUserPanel(); }
     )
});

从功能上讲,一切都按预期工作。问题是,当我单击“取消”链接时,Firebug 在控制台中显示错误:

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

我已经多次单步执行代码,并且在调用hideNewUserPanel() 之前的某个时间点出现了错误。冒着听起来像“那些程序员”之一的风险(声称在​​ GCC 中发现错误并假设他们自己的代码是完美的那种),异常是从 jQuery 中的某个地方抛出的,所以我认为问题是在那里。我正在使用 jQuery 1.3.2(这是一个使用许多 jQuery 插件的遗留项目,如果我们更新到 1.4.x,这些插件将会中断)。

我的代码有什么明显的问题,我根本看不到吗?坦率地说,这段代码非常简单,我真的不明白问题出在哪里。

谢谢!

【问题讨论】:

  • 什么,jQuery 并不完美? :)
  • @Robusto - 展示许多主流语言作品,但没有正确关闭大括号,IE5 和 HTML 不算在内! :)
  • 请注意,这可能只是:$('#cancel_create_user_btn').live('click', hideNewUserPanel);
  • 您是否检查过可能重复的“id”值(例如,多个“cancel_create_user_btn”或其他内容)?
  • 是否有任何其他事件绑定到该按钮?

标签: javascript jquery exception


【解决方案1】:

这个:

$(function(){
    $('#cancel_create_user_btn').live('click', 
        function(){ hideNewUserPanel(); }
});

函数后面需要一个右括号,像这样:

$(function(){
    $('#cancel_create_user_btn').live('click', 
        function(){ hideNewUserPanel(); });
});

另外,你可以把它写得简单一点:),试试这个:

$(function(){
    $('#cancel_create_user_btn').live('click', hideNewUserPanel);
});

【讨论】:

  • 废话 - 实际上这是一个转录错误。结束括号确实出现在代码中,我只是忽略了在我的问题中添加它。我会更新问题。
  • 问题是,在解析脚本块时不会产生语法错误,而不是稍后?我想知道选择器引擎内部是否有什么东西让我感到困惑。
  • @Pointy - 看起来他在某处有一个$("#"),但不在发布的代码中......
【解决方案2】:

您似乎正在等待live 通话的结束:

$(function(){
    $('#cancel_create_user_btn').live('click', 
        function(){ hideNewUserPanel(); }
    ); // <===
});

【讨论】:

    【解决方案3】:
    $(function() {
    
            function hideNewUserPanel() {
                $('#create_user_panel').slideUp('slow');
                $('.right_interior_panel').slideDown('slow');
            }
    
            $('#cancel_create_user_btn').live('click', function() { hideNewUserPanel(); });
    
    
    
        });
    

    【讨论】:

      猜你喜欢
      • 2013-01-11
      • 1970-01-01
      • 2020-02-02
      • 1970-01-01
      • 1970-01-01
      • 2015-01-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多