未捕获的错误:语法错误,无法识别的表达式:不支持的伪:[重复]

Posted

技术标签:

【中文标题】未捕获的错误:语法错误,无法识别的表达式:不支持的伪:[重复]【英文标题】:Uncaught Error: Syntax error, unrecognized expression: unsupported pseudo: [duplicate] 【发布时间】:2013-04-11 05:35:36 【问题描述】:

我有一个 txtBox,它的 id 是:beginDateTxt

但是 jsf 让它j_idt8:beginDateTxt

在 jquery 中,我尝试这样访问它

  <script type="text/javascript">
            $(document).ready(function() 
                $(function() 
                    $("#j_idt8:beginDateTxt").mobiscroll().date(
                       theme: 'android-ics light', mode:'scroller', display: 'bottom'
                    );
                );

            );
   </script>

但我得到以下错误:

未捕获的错误:语法错误,无法识别的表达式:不支持的伪:beginDateTxt

为什么?

【问题讨论】:

【参考方案1】:

你可以试试

$(document.getElementById('j_idt8:beginDateTxt')).mobiscroll().date(theme: 'android-ics light', mode:'scroller', display: 'bottom');

一般来说,jQuery 在其$() 函数中使用类似 CSS 选择器的东西。在 CSS 选择器中,: 表示伪类。但是,在您的情况下,: 只是 id 的一部分。

如果您使用通用 getElementById(),则参数不会分解,而是完全被视为一个 ID。因此,通过使用getElementById() 并用$() 包装结果,您可以规避这种“误解”。

不过,总的来说,我认为更改 JSF 中的命名空间方案会更好。

编辑

jQuery documentation on selectors 声明您应该使用 \\ 转义特殊字符:

使用任何元字符(例如 !"#$%&'()*+,./:;?@[]^`|~ )作为 a 的文字部分名称,必须用两个反斜杠转义:\。例​​如带有id="foo.bar"的元素,可以使用选择器$("#foo\\.bar")

这将导致丹尼尔已经给出的答案,在我看来,它优于上面给出的答案。但是,这种解释仍然有效。

$("#j_idt8\\:beginDateTxt").mobiscroll().date(theme: 'android-ics light', mode:'scroller', display: 'bottom');

【讨论】:

我以为我们使用的是 jQuery 选择器所以我们不使用 getElementById @BobSort 这里的问题是,id 包含一个:,这使 jQuery 认为使用了伪类,结果失败。为了规避我使用了getElementById(),它将其参数解释为字符串。 它有效。但是,我认为使用 jquery 的好处之一是我们不必使用 getelementbyid。而不是从 d.getelem...() 的返回中构建一个 jquery 节点,真正的解决方案是正确转义 jquery 选择器中的字符串。 我完全忘记了转义冒号 (:)。我正在逐字使用代码中的 id 并慢慢发疯。谢谢提醒!【参考方案2】:

如果您想使用 jQuery id 选择器,您需要使用 \ 转义 :,然后转义 \(双转义)

这里:

$(function() 
    $("#j_idt8\\:beginDateTxt").mobiscroll().date(
        theme: 'android-ics light',
        mode:'scroller', display: 'bottom'
    );
);

【讨论】:

我更喜欢这个。只是回答问题哈哈。

以上是关于未捕获的错误:语法错误,无法识别的表达式:不支持的伪:[重复]的主要内容,如果未能解决你的问题,请参考以下文章

作为 ID 的 JQuery 变量导致未捕获错误:语法错误,无法识别的表达式:'#cell32'

如何防止 jQuery tablesorter 中的“未捕获的异常:语法错误,无法识别的表达式”?

未捕获的错误:语法错误,无法识别的表达式:select:[id * =“devices_0_command”] [关闭]

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

超链接无法使用淘汰赛。给出错误:语法错误,无法识别的表达式

图像高度和宽度的“语法错误,无法识别的表达式”