【问题标题】: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

为什么?

【问题讨论】:

    标签: javascript jsf


    【解决方案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'
        });
    });
    

    【讨论】:

    • 我更喜欢这个。只是回答问题哈哈。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-05
    • 2013-10-10
    • 2016-05-28
    • 1970-01-01
    相关资源
    最近更新 更多