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

时间:2009-11-21 15:33:39

标签: javascript jquery ajax onclick

我在jQuery中的.click()事件中遇到此错误。我在Firebug中看到它。我用的是最新版本,1.3.2(分钟) 单击会在我的网站中触发$ .ajax()请求。我问谷歌有关这一点,他所知道的只是“%”或“[@]”作为无法识别的表达,没有关于“#”。

这是我的一些代码:

    $("form#buyForm #submitForm").live("click", function(e) {
        var errors = 0;

        var inputLastName_value = $("form#buyForm input#userLastName").val();
        if (inputLastName_value == "") {
         errors = 1;
         formErrorHandling("#userLastName");
         return false;
        }
        return false;
    });

这样我检查所有输入的错误,然后调用formErrorHandling()做一些显示/隐藏,这样的东西,没什么重要的。

我读到它可能来自我的选择器,但它们似乎都很好。

其他人有同样的问题吗?

感谢。

6 个答案:

答案 0 :(得分:8)

从我所看到的异常似乎是由你正在使用的jScrollPane插件触发的。

尝试直接从主干更换您包含的脚本(v1.2.3,这与2008年12月一样久)。其中包括对v.1.2.3的许多改进,并修复了我jScrollPane.js的异常(使用YUICompressor缩小的r87 jScrollPane的jScrollPane.min.js缩小版)


删除了不再需要的旧答案

答案 1 :(得分:3)

在某些浏览器中,id可能为空,JQuery将“#”作为选择器阻塞。

答案 2 :(得分:1)

2011年9月

更改
$(document).ready( function () {
  $('#'+id).creatorCall( {init:param} ) ;
} );

$(document).ready( function () {
  $(this).creatorCall( {init:param} ) ;
} );

并治愈了同样的uncaught exception: Syntax error, unrecognized expression: #消息

答案 3 :(得分:0)

formErrorHandling函数是什么样的?是期待选择器还是jQuery对象?

或许您需要的是将其称为

formErrorHandling($("#userLastName"));

答案 4 :(得分:0)

我知道这是一个老问题,并且有更新的版本jScrollPane,但由于遗留问题,我需要使用当前版本的修复程序。如果您使用上述答案中的jScrollPane.js,则需要更改第534行中的代码:

变化:

    if (h && h.substr(0, 1) == '#' && h.length > 1) {

    if (h && h!='#' && h.substr(0, 1) == '#' && h.length > 1) {

使用修复程序负责文档点击的整个代码块:

$(document).bind('click', function(e){
    $target = $(e.target);
    if ($target.is('a')) {
        var h = $target.attr('href');
        if (h && h!='#' && h.substr(0, 1) == '#' && h.length > 1) {
            setTimeout(function(){
                scrollTo(h, !settings.animateToInternalLinks);
            }, $.browser.safari ? 100 : 0);
        }
    }
});

如果链接的scrollTo等于href

,基本上会忽略#函数

干杯

-G。

答案 5 :(得分:0)

我的问题似乎是选择器中有太多#的原因造成的。

例如:

$('##id_name')

应该是......

$('#id_name')