【问题标题】:cannot accept jquery selector from managed bean jsf2 primefaces无法接受来自托管 bean jsf2 primefaces 的 jquery 选择器
【发布时间】:2013-05-02 11:31:26
【问题描述】:

我想从托管 bean 执行 jquery,但我遇到了选择器的问题:

Uncaught Error: Syntax error, unrecognized expression: unsupported pseudo: lesarticles 

这是托管 bean 代码:

RequestContext.getCurrentInstance().execute("$('#tabView\\:lesarticles').children().find('table tbody tr td div').css('display', 'none');");

这是组件树

<p:tabView id="tabView">
<p:tab>
<p:datatable id="lesarticles">......

当我跑步时:

RequestContext.getCurrentInstance().execute("$('#tabView:lesarticles').children().find('table tbody tr td div').css('display', 'none');");

我也有错误

我该如何解决这个问题

谢谢你

【问题讨论】:

    标签: jquery jsf-2 jquery-selectors primefaces managed-bean


    【解决方案1】:

    为了尽量减少转义问题,只需这样做

    RequestContext.getCurrentInstance().execute("easyNameFunc();");
    

    在你的 js 中创建

    function easyNameFunc(){
        $('#tabView\\:lesarticles').children().find('table tbody tr td div').css('display', 'none');
    }
    

    这样你可以进行更好的调试并减少陷阱

    【讨论】:

      【解决方案2】:

      要正确转义 id 中的冒号(用于 jQuery 选择器),我需要 4 个反斜杠。我为此挣扎了好几个小时,也许这会对其他人有所帮助。如果您在 Firebug 中查看实际发送到浏览器的内容,则 2 个反斜杠仅变为 1 个,您会收到错误消息。
      改变:

      RequestContext.getCurrentInstance().execute("$('#tabView\\:lesarticles').children().find('table tbody tr td div').css('display', 'none');");
      

      到:

      RequestContext.getCurrentInstance().execute("$('#tabView\\\\:lesarticles').children().find('table tbody tr td div').css('display', 'none');");
      

      这至少会让你摆脱错误。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-12-29
        • 2013-02-01
        • 1970-01-01
        • 1970-01-01
        • 2012-05-22
        • 1970-01-01
        • 2012-08-16
        相关资源
        最近更新 更多