无法从托管bean jsf2 primefaces中接受jquery选择器



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

我也有错误

如何解决

thank you

为了尽量减少转义问题,请执行

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

并在js中创建

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

这样你可以更好的调试和更少的陷阱

要正确转义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');");

这至少会让你越过错误。

最新更新