不能接受来自托管bean jsf2 primefaces的jquery选择器

时间:2013-05-08 09:34:06

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

我想从托管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');");

我也有错误

我该如何解决

谢谢

2 个答案:

答案 0 :(得分:2)

为了尽量减少逃避问题

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

并在你的js中创建

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

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

答案 1 :(得分:1)

要正确转义id中的冒号(对于jQuery选择器),我需要4个反斜杠。我挣扎了好几个小时,也许这会帮助别人。如果你看看实际发送到Firebug中的浏览器的是什么,2个反斜杠只变为一个,你得到错误。
改变:

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');");

这至少会让你超越错误。