我想从托管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');");
我也有错误
我该如何解决
谢谢
答案 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');");
这至少会让你超越错误。