2

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

我也有错误

我该如何解决

谢谢你

4

2 回答 2

2

为了尽量减少逃逸问题

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

并在你的 js 中创建

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

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

于 2013-05-08T09:41:19.700 回答
1

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

这至少会让你摆脱错误。

于 2014-09-15T02:29:51.080 回答