我想从托管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');");
这至少会让你越过错误。