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

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

这是我的一些代码:

$("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)

3 years ago

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

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


删除不再需要的旧答案

3 years ago

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

3 years ago

2011年9月

改变了

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

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

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

3 years ago

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

也许你需要的是把它称为

formErrorHandling($("#userLastName"));

3 years ago

我知道's an old issue and there'是较新版本的jScrollPane,但是由于遗留问题我需要使用当前版本's the fix. If you' ll使用上面的答案中的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);
        }
    }
});

基本上,如果链接的 href 等于 #scrollTo 函数将被忽略

干杯

G .

3 years ago

对我来说问题似乎是由于选择器中有太多# .

例如:

$('##id_name')

本来应该...

$('#id_name')